我试图实现一个jQuery自动完成,其中自动完成从ajax源获取数据。然而,由于某种原因,当我打电话时,结果是302,而这反过来又会导致404。
这就是我所拥有的:
In functions.php:
function my_ajax_foo() {
die("OK");
}
add_action(\'wp_ajax_my_ajax_foo\', \'my_ajax_foo\' );
add_action(\'wp_ajax_nopriv_my_ajax_foo\', \'my_ajax_foo\' );
My Javascript:
function onGetData(term, callback) {
jQuery.post( "http://mydomain.com/wp-admin/admin-ajax.php", {
action: "my_ajax_foo",
cookie: encodeURIComponent(document.cookie),
term: term
},
function( response ) {
console.log( response );
} );
}
jQuery(document).ready(function() {
jQuery("#my_input_field").autocomplete( { source:onGetData } );
});
所有Javascript都已正确加载。当我在Autocomplete输入框中键入时,会进行ajax调用,但我可以在Firebug中看到该调用会导致HTTP 302。
当我打电话给http://mydomain.com/wp-admin/admin-ajax.php
只需从浏览器URL我就可以得到-1
已返回,因此我知道URL存在。
非常感谢您的帮助。
最合适的回答,由SO网友:Martin Zeitler 整理而成
我想说,跳过这个:
cookie: encodeURIComponent(document.cookie)
没有必要在XHR上发布任何cookie,浏览器可以处理这些。
那么,像这样的东西怎么样(未经测试):
data:{\'term\':encodeURIComponent($.term)}
最简单的方法是使用FireBug,打开网络面板并检查两个HTTP头。