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.
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.