2017-10-21 68 views
0

我有我的成功函數(AJAX)與解析JSON的問題。 我現在開始正確地學習json,但我根本無法得到這個工作。笨 - jQuery的阿賈克斯 - 解析JSON收到從AJAX調用

我有這樣的jQuery函數提交數據:

$("#loginForm").on('submit', function(form) 
{ 
    form.preventDefault(); 
    var tdata= $("#loginForm").serializeArray(); 
    var that = $(this), 
    data = tdata; 

    $.ajax({ 
     url: that.attr('action'), 
     type: 'POST', 
     data: data, 

     success: function(data){ 

      alert(data["error"]["email"]); 
     }, 
     error: function(){ 
      alert(data["error"]["email"]); 
     } 
    }); 

}); 

在控制器我有這樣的:

$this->load->library('form_validation'); 
     $this->form_validation->set_rules('email', 'Email', 'required|valid_email|trim|xss_clean'); 
     $this->form_validation->set_rules('password', 'Password', 'required'); 
..... 
$arrReturnData['error'] = $this->form_validation->error_array(); 
echo json_encode($arrReturnData); 

在Firefox中,當我跟蹤請求,得到的字符串是:

{"error":{"email":"The Email field is required.","password":"The Password field is required."}} 

但我不能解析它:(我不知道怎麼了,我花了3個多小時只是在此看齊噸。一切正常,我無法解析這一點。

我想這樣的:

data.error["email"] 

data[0]["email"] 

,但未能得到該電子郵件的錯誤消息。請幫助:)

+0

檢查https://stackoverflow.com/a/4935684/2275490和相關 – Vickel

+0

它應該工作,只要你有相同的JSON回到成功回調。什麼是響應內容類型?它是文本還是'application/json'? – Shyju

+0

當我使用警報(數據)時,我得到[對象對象],[對象對象],[對象對象]。如果我使用obj = JSON.parse(data); alert(obj.error);我得到的錯誤「JSON.parse:在JSON數據線1列2意外的字符」 – BlasterGod

回答

0

我找到了一個解決方案。我無法設法使用數據變量。 我做了什麼,是修正誤差函數(jQuery的AJAX)是這樣的:

error: function(request, status, error){ 
       var json=request.responseText; 
       obj = JSON && JSON.parse(json) || $.parseJSON(json); 
       alert(obj.error.email); 

      } 

所以我用request.responseText的JSON.parse。 現在我可以成功地使用obj.error.email