J'ai sur la boîte de recherche frontend, j'ai implémenté la complétion automatique pour cela, et quand je suis connecté, cela fonctionne très bien pour moi.
Mais quand je ne suis pas connecté, je reçois 302 à la suite d'un appel ajax, les en-têtes de réponse ont un emplacement, alors il essaie de rediriger les messages, je ne sais pas pourquoi. Je remarque beaucoup de messages sur ce problème, mais aucun message/question ne m'a pas aidé.
Mon code, qui fonctionne lorsque les utilisateurs sont connectés, mais ne fonctionne pas lorsque les utilisateurs ne sont pas connectés, aidez-nous.
$.ajax({
type: 'POST',
url: MyAjax.ajaxurl,
data: {
action : 'myajax-submit',
term : request.term,
_ajax_nonce : MyAjax.ajax_nonce
},
dataType: "json",
beforeSend: function(jqXHR, settings){
},
success: function(data, textStatus, jqXHR){
response(data);
},
error: function(jqXHR, textStatus, errorThrown){
response([{
'value':'Error retriveing data',
'id':1
}]);
},
complete: function(jqXHR, textStatus){
},
statusCode: {
}
});
add_action('wp_ajax_myajax-submit', 'myajax_submit');
add_action('wp_ajax_nopriv_myajax-submit', 'myajax_submit');
function myajax_submit() {
global $wpdb;
//check_ajax_referer('myajax_nonce', '_ajax_nonce');
if (isset($_POST["term"])) {
$q = strtolower($_POST["term"]);
.....
$json_response = array();
...
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: text/x-json");
print json_encode($json_response);
die();
}
}
On dirait que vous rencontrez un problème avec un autre plugin ou une autre fonction qui tente d'empêcher les utilisateurs non connectés ou non administrateurs d'accéder à la zone wp-admin afin qu'elle soit redirigée à partir de wp-admin/admin-ajax.php et vous donne votre réponse 302 .
Vous devez trouver le code qui fait cela et ajouter une condition pour ne pas rediriger si la constante DOING_AJAX est définie.
Dans admin-ajax.php
, la constante WP_ADMIN
est définie sur TRUE
. Donc, si vous incluez vos fichiers dans l'exemple if ( ! is_admin() )
, votre demande sera abandonnée au début de admin-ajax.php
.