2014-10-02 92 views
0

我想通过ajax发送错误给用户,如果他没有正确填写表单。阅读json结果,同时请求ajax请求不好

这是我如何通过ajax的答案发送到浏览器:

if($bo){ 
    header('HTTP/1.1 400 Bad Request'); 
    header('Content-Type: application/json; charset=UTF-8'); 
    $error['message'] = 'Some error message'; 
    echo json_encode($error); 
    die; 
} 

这是我的jQuery脚本:

$.ajax(
      { 
       url: formURL, 
       type: "POST", 
       data: postData, 
       success: function(data, textStatus, jqXHR) 
       { 

        // some code ... 

       }, 
       error: function(data, jqXHR, textStatus, errorThrown) 
       { 
        // how to get message here json{"message":"some_message"} 
        var jsonObj = JSON.parse(data); 
        $r = jsonObj.message; 
        alert($r);      
       } 
      }); 

我可以使用Firebug控制台中看到消息,但我不t知道如何获取包含我的错误的变量:/

有什么建议吗?

感谢

+0

什么是'data'在控制台当您添加'的console.log(数据);',字符串或者已经jQuery的已经被解析,并返回一个对象? – jeroen 2014-10-02 16:27:55

+0

尝试向AJAX调用添加datatype ='JSON',以确保您的AJAX知道应该在返回中查找的内容。 – Mark 2014-10-02 16:49:31

回答

0

谢谢大家。

我想我找到了解决方案。要访问消息值:

error: function(data, jqXHR, textStatus, errorThrown) 
     { 
      console.log(data.responseJSON.message); 
     } 
0

首先,我建议使用的return代替echo & die。它更整齐,并关闭。

二,没有必要解析JavaScript中的json,它就像巧克力,它只是理解。只需在您的ajax输入对象中使用accept: application/jsonjsonp并使用data.message即可。

这两个技巧结合起来应该可以解决你的问题。

+0

首先,谢谢。我可以通过以下方式访问消息值:console.log(data.responseJSON.message);但当我改变回声与死亡与回报。该消息无法发送到浏览器(我检查了Firebug控制台) – 2014-10-02 18:31:36