2014-10-02 110 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