在php中操作检索到的AJAX数据

时间:2014-07-04 作者:MEDZ

我对2个变量发出了一个基本的ajax请求。我希望在后端发送和操作这些值,以便在数据库查询中使用它们。所有这些都应该在页面加载时发生。我的main。js代码:

主要的js文件

var lat =  21.458965;
var lng =  -11.336985;
jQuery.ajax({
        type:"POST",  
        url: ajaxurl,                   
        data: {\'action\':\'func\',
               \'lat\':lat,
               \'lng\':lng}, 
        success:function(data){
                // note that i don\'t want the data to return back to the front-end.     
                        },
                        error:function(errorThrown){
                            console.log(errorThrown);
                        }
                    });
        }
功能。php

wp_register_script( \'main\', plugin_dir_url( __FILE__ ).\'js/main.js\', array( \'jquery\' ) );
wp_enqueue_script( \'main\' );

function func(){
    if(isset($_REQUEST)){
            //i tried to retrieve using $_POST and $_GET but the 2 arrays where empty.
            // i need to retrieve  both vars and take them out of the function then use them in a db query.

    }
}
add_action(\'wp_ajax_func\', \'func\');
add_action(\'wp_ajax_nopriv_func\', \'func\');
这里我想要的是将数据(具体为2个int变量)从javascript文件发送到函数。php所以任何其他方法都可以做到这一点,请告诉我。

为此,我使用JS创建了一个包含2个隐藏输入元素的表单,然后使用$(\'form\')提交它。提交();但页面加载了两次(正常页面加载和提交重新加载)。

2 个回复
SO网友:sMyles

是的,你应该使用die(); 在ajax函数调用中,但由于您不返回数据,也不关心返回的是什么,所以没有必要

你应该使用nonce,不管在什么情况下都要习惯使用它,这是一个很好的习惯。

http://codex.wordpress.org/WordPress_Nonceshttp://codex.wordpress.org/AJAX_in_Plugins

您不应该使用名为func, 将其命名为特定于您的设置的名称,即process_my_lat_lng

要解决两次提交表单的问题,请将ajax调用放入函数中,然后在页面加载时调用该函数:

jQuery(document).ready(function($){
    processMyLatLng();
});

function processMyLatLng() {
    var lat = 21.458965;
    var lng = -11.336985;
    jQuery.ajax( ajaxurl, {
        type: \'POST\',
        data: {
            \'action\': \'func\',
            \'lat\': lat,
            \'lng\': lng
        },
        success: function(data) {
            // note that i don\'t want the data to return back to the front-end.
        },
        error: function(errorThrown) {
            console.log(errorThrown);
        }
    });
}

SO网友:Will

通过AJAX提交表单(或其他)数据时,可以通过$_POST$_GET 变量取决于使用的方法。在您的情况下,您使用的是post方法,因此您可以使用$_POST[\'lat\']$_POST[\'lng\'] 并根据需要操纵它们。

结束

相关推荐

在WordPress中实现jQuery“点击即可展开”链接

Novice coder - apologies for any stupid comments我一直在试着在我的Wordpress博客页面上的一个div上制作一个show more按钮。我看过很多教程,它们似乎都同意JavaScript/jQuery是唯一的方法。许多解决方案依赖于创建两个单独的div,您可以切换“显示:无”,因为使用foreach (据我所知)无法分割的论点如果我可以简单地覆盖“最大高度”设置(而不必将其拆分为多个div),只需单击链接即可将div填充到自己所需的高度,这将非常有用。本