2017-10-21 15 views
0

私の成功関数(ajax)でjsonを解析する際に問題があります。 私は今jsonを正しく学び始めていますが、これを動作させることはできません。CodeIgniter - Jquery Ajax - Parse JsonがAjaxコールから受け取りました

私がデータを提出するために、このjqueryの機能を持っている:Firefoxで

$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); 

私が要求をトレースする際に、受信した文字列は次のとおりです:

私はこれを持っているコントローラで

$("#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"]); 
     } 
    }); 

}); 

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

私はそれを解析することはできません:(私は、どのようにわからない、私はこの額にちょうど3時間以上を費やしたt。すべて私はこれを解析することはできませんが動作します。

私は次のように試してみました:

data.error["email"] 

または

data[0]["email"] 

しかし、それは電子メールのエラーメッセージの取得に失敗しました。助けてください:)

+0

check https://stackoverflow.com/a/4935684/2275490 and related – Vickel

+0

同じJSONを成功のコールバックに戻している限り、正常に動作するはずです。応答内容の種類は何ですか?テキストか 'application/json'ですか? – Shyju

+0

アラート(データ)を使用すると、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]が表示されます。 obj = JSON.parse(data)を使用すると、 アラート(obj.error); "JSON.parse:JSONデータの第1行第2列の文字が予期しない文字"エラーが発生する – BlasterGod

答えて

0

私は解決策を見つけました。私はデータ変数を扱うことができませんでした。

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

      } 

だから私はrequest.responseTextのJSON.parseを使用します。私がやったこと は、このように(jqueryのAJAX)誤差関数を変更しています。 これで正常にobj.error.emailを使用できます。

関連する問題