web-dev-qa-db-ja.com

jQueryのAjax呼び出しはHTTP 302をスローします

オートコンプリートがajaxソースからデータを取得するjQueryオートコンプリートを実装しようとしています。ただし、何らかの理由で電話をかけると302になり、その結果404になります。

これは私が持っているものです:

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' );

私の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が正しくロードされています。オートコンプリート入力ボックスに入力すると、ajax呼び出しが行われますが、呼び出しがHTTP 302になることをFirebugで確認できます。

ブラウザのURLから単にhttp://mydomain.com/wp-admin/admin-ajax.phpを呼び出すと、-1が返されるので、そのURLが存在することがわかります。

任意の助けは大歓迎です。

1
Luke

私は言うだけで、それをスキップしてください:

 cookie: encodeURIComponent(document.cookie)

XHRにクッキーを投稿する必要はありません - ブラウザがそれを処理します。

まあ、代わりにそのようなものについてどうですか(未テスト):

data:{'term':encodeURIComponent($.term)}

最も簡単な方法は、FireBugを使用してNetパネルを開き、両方のHTTPヘッダーを調べることです。

1
Martin Zeitler