2011-10-21 196 views
3

当我使用Jquery执行ajax请求时,从PHP获取响应的正确方法是什么?Jquery Ajax响应

我有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; 
}); 

和PHP代码mail.php

// Some mail functions here 

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

我试图提醒效应初探alert(data.msg)但它说不确定。有什么想法吗?

+0

看看有哪些开发人员工具可供您查看正在返回的请求。如果你到达'alert',那么请求就会恢复正常。你只需要检查'数据'的样子(在Chrome中做一个console.log(data)来查看它) –

+0

你可以尝试提醒(数据)吗? :) –

+0

您需要使用['.parseJSON()'](http://api.jquery.com/jQuery.parseJSON/)成功解析您的JSON,或尝试使用['.getJSOn()'](http ://api.jquery.com/jQuery.getJSON/)而不是'.ajax()' – JMax

回答

0

您是否尝试过设置您的标题以返回JSON? 这样的jQuery知道你返回JSON

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

老兄我不认为它有需要 –

6

除此之外,我没有测试过其他的东西,但我只看到有一个在你的Ajax选项拼错:

dateType: 'json' 

更改它到:

dataType: 'json' 
+0

这应该做到这一点^ _ ^刚刚去那里之前,我做了xD – DarkMantis

+0

Keener的眼睛比我今天早上! :) –

+0

哇,我没有看到。谢谢!虽然还有另一个问题。现在说'data'为空。 – Turtel

0

首先更改Kavousi提到的datatype的拼写。然后在你的回复中解析你的传入数据这样的一些事情

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