web-dev-qa-db-fra.com

l'appel ajax jQuery lance un HTTP 302

J'essaie d'implémenter une complétion automatique jQuery dans laquelle la complétion automatique obtient ses données à partir d'une source ajax. Cependant, pour une raison quelconque, lorsque je passe l'appel, il en résulte un 302, qui à son tour donne lieu à un 404.

C'est ce que j'ai

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

Mon 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 } );
});

Tout le Javascript est chargé correctement. Lorsque je tape dans la zone de saisie de saisie semi-automatique, l'appel ajax est effectué mais je peux voir dans Firebug que l'appel génère un protocole HTTP 302.

Lorsque j'appelle le http://mydomain.com/wp-admin/admin-ajax.php simplement à partir de l'URL du navigateur, un -1 est renvoyé pour que je sache que l'URL existe.

Toute aide très appréciée.

1
Luke

Je dirais, sautez simplement ça:

 cookie: encodeURIComponent(document.cookie)

Il n'est pas nécessaire de publier de cookies sur XHR - le navigateur s'en charge.

Eh bien, que diriez-vous de quelque chose comme ça à la place (non testé):

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

Le plus simple consiste à utiliser FireBug, à ouvrir le panneau réseau et à inspecter les deux en-têtes HTTP.

1
Martin Zeitler