2010-08-26 6 views
0

J'ai un script PHP que j'appelle avec la fonction .post() dans jQuery. Si tout se passe bien, il sort "WIN", sinon il génère toutes les erreurs de base de données ou tout ce qu'il obtient.Le rappel AJAX ne gère pas correctement les données

$.post("myscript.php", {key: "value"}, function(data) { 
    if(data=="WIN") { 
     // the stuff that I want it to do that it won't do 
    } else { 
     alert(data); 
    } 
}); 

Quand il fonctionne cependant, je reçois « WIN » dans une alerte JS, et les choses que je veux faire ne se produit pas. Depuis "WIN" apparaît dans l'alerte, le script PHP est clairement sortie ce que je m'attendais. Je m'étais même assuré de mettre le Content-Type du script PHP à text/plain, alors pourquoi pas data=="WIN". Pourquoi mon WIN FAIL?

Répondre

1

Avez-vous vérifié les espaces? Tout espace avant ou après echo "WIN" affectera la sortie, vérifiez également les espaces avant et après vos balises <?php.

+1

Hmm bon point. Je pense que je me suis débarrassé de tous les espaces avant le "WIN", mais mon IDE semble ajouter une nouvelle ligne à la fin du fichier chaque fois que j'enregistre. Peut-être que je devrais filtrer les espaces en javascript. – DLH

+0

'data.replace (/^\ s + | \ s + $/g, '');' rogné les choses vraiment bien. – DLH

+0

Oh, rien d'autre, je viens de réaliser que jQuery avait une fonction '.trim()'. Je vais utiliser ça. – DLH

0

Vous essayez probablement d'accéder aux données retournées par 'Données' directement. Essayez

alert(data.d); 

Je pense que vous trouverez que les données renvoyées sont dans une propriété. Si je me souviens bien, le nom de cette propriété est 'd'. Utilisez le plugin FireFox FireBug pour afficher les données renvoyées. C'est très utile pour le débogage AJAX.

Bonne chance!

+0

Si les données retournées sont en texte brut, alors 'data' devrait être la sortie exacte du fichier d'après ce que je comprends. Je pense que l'ensemble des propriétés s'applique principalement aux données JSON. – DLH

Questions connexes