2011-10-21 5 views
3

Quelle est la bonne façon d'obtenir une réponse d'un PHP quand je fais une requête ajax en utilisant Jquery?Jquery Ajax réponse

Je possède ce code pour Jquery:

$('#quote-form').submit(function(e) { 
    e.preventDefault(); 
    $.ajax({ 
     type: 'POST', 
     data: $(this).serialize(), 
     dateType: 'json', 
     url: 'mail.php', 
     success: function(data) { 
      alert(data.msg); 
     } 
    }); 

    return false; 
}); 

et le code PHP mail.php:

// Some mail functions here 

$mailSent = @mail($to, $subject, $message, $headers); 
$return['msg'] = $mailSent ? 'mail sent' : 'mail failure'; 
echo json_encode($return); 

J'ai essayé d'alerter le Reponse alert(data.msg) mais il veut tout dire non défini. Des pensées?

+0

Jetez un oeil à tous les outils de développement qui sont à votre disposition pour voir la demande qui est retournée. Si vous arrivez à l'alerte, la demande revient bien. Vous avez juste besoin d'inspecter ce à quoi ressemble 'data' (faire une console.log (data) dans Chrome pour l'afficher) –

+0

Pourriez-vous essayer d'alerte (data)? :) –

+0

Vous devez analyser votre JSON après succès avec ['.parseJSON()'] (http://api.jquery.com/jQuery.parseJSON/) ou essayer d'utiliser ['.getJSOn()'] (http : //api.jquery.com/jQuery.getJSON/) au lieu de '.ajax()' – JMax

Répondre

0

Avez-vous essayé de définir vos en-têtes pour renvoyer JSON? De cette façon jQuery sait que vous êtes de retour JSON

header('Content-type: application/json'); 
+0

mec Je ne pense pas qu'il a un besoin –

6

A part d'autres choses que je ne l'ai pas testé, mais je viens de voir qu'il ya un Misspell dans les options ajax:

dateType: 'json' 

Modifier ce à:

dataType: 'json' 
+0

Cela devrait le faire^_^Je suis juste arrivé avant que je l'ai fait xD – DarkMantis

+0

yeux Keener que j'ai ce matin! :) –

+0

Wow, je n'ai pas vu ça. Merci! Bien qu'il y ait un autre problème. Il est maintenant dit que 'data' est nul. – Turtel

0

premier changement l'orthographe datatype comme mentionné par Kavousi. Puis analysez vos données entrantes quelque chose comme ceci dans votre réponse

var response = obj = JSON.parse(data); 
    alert(response.msg);