web-dev-qa-db-fra.com

AJAX état de la demande 200 mais pas de "réponse" réelle

En résumé, j’ai écrit un appel AJAX qui exécute un script PHP qui fait écho à hello world en réponse à un clic de bouton (géré par JS). Je reçois le statut 200 et, dans la section réponse de la fonction "inspecter l'élément" de mon navigateur, le nom "Hello world", mais il ne l'affiche pas sur la page. Je sais que "echo" devrait fonctionner car je l'ai utilisé pour indiquer que mon site s'est correctement connecté à une base de données MySQL. La section de réponse affiche donc "Connected Successfully Hello World" (sic) mais la page n’affiche que "Connected Successfully". Donc, pour une raison quelconque, cela ne montre pas réellement ce bit Hello World.

PHP

function test() {
echo "Hello World"; 
die();
}

JS

function yes(){
   jQuery.ajax({
   url: ajaxurl,
   data: {
        'action':'test_function'            
         },
   });
};

Toutes mes excuses à l'avance si la réponse est ridiculement simple - je suis novice en développement Web

Informations complémentaires: utilisation du thème X (WP)

1
SBZ

Vous êtes sur la bonne voie, mais vous devez modifier quelques éléments. Votre javascript nécessite (dans le meilleur des cas) un objet en tant que résultat et si vous souhaitez voir le résultat provenir de PHP votre js doit le gérer. Un test rapide consisterait à créer un journal de la console, juste pour vérifier si cela fonctionne.

Essayez d’éditer votre code de cette manière et vérifiez dans la console de votre navigateur:

// PHP file:
function test() {

$result = array(0 => 'Testresult from Ajax 1', 1 => 'Testresult from Ajax 2');
header('Content-Type: application/json');
die (json_encode($result));
}

Puis dans votre js:

// JS file:
function yes() {

var obj = {
    url: ajaxurl,
    type: 'POST',
    data: {
        action: 'test_function'
    },
    dataType: 'JSON',
    cache: false
};

jQuery.ajax(obj)
    .done(function( data ) {
        console.log('result is: ', data);
    });
};

Si cela fonctionne, vous pouvez gérer les résultats dans la fonction done (), par exemple écrire des éléments dans le dom ou autre.

1
Luckyfella