JQuery AJAX调用引发HTTP302

时间:2012-02-12 作者:Luke

我试图实现一个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存在。

非常感谢您的帮助。

1 个回复
最合适的回答,由SO网友:Martin Zeitler 整理而成

我想说,跳过这个:

 cookie: encodeURIComponent(document.cookie)
没有必要在XHR上发布任何cookie,浏览器可以处理这些。

那么,像这样的东西怎么样(未经测试):

data:{\'term\':encodeURIComponent($.term)}
最简单的方法是使用FireBug,打开网络面板并检查两个HTTP头。

结束