我对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\')提交它。提交();但页面加载了两次(正常页面加载和提交重新加载)。
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);
}
});
}