0

PHP5.3.10のjson_encode関数からjQuery1.9.1に次のJSON文字列が返されます

{
   "messsages":{
      "error":["API_CONTROLLER.INVALID_LOGIN_PASSWORD"],
      "warning":[],
      "notice":[],
      "success":[]
   },
   "result":false
}

jQueryコード:

$.ajax(targetURL, {
   type: method,
   data: params,
   dataType: "json",
   success: function(resp){
      console.log(resp); //Shows object with all vars correctly displayed

      //The for loop also outputs all keys and values correctly
      for(var i in resp){
         console.log("I: "+i);
         console.log("RESP: ");
         console.log(resp[i]);
      }

      console.log("DIRECT ACCESS");
      console.log(resp.messages); //WHY undefined?
      //console.log(resp.messages[error]); //undefined
      //console.log(resp.messages[error][0]); //undefined
      //console.log(resp.messages.error); //undefined
      //console.log(resp.messages.length); //Just trying => undefined
      console.log(resp.result); //this works!
      //console.log(resp[messages]); //Just trying => undefined
   }
});

メッセージにアクセスするにはどうすればよいですか?

最初のconsole.logおよびループは、メッセージが存在し、messages.error、messages.noticeなども存在することを示しています。しかし、どうすればそれらにアクセスできますか?この種のjQueryエラーですか?

4

2 に答える 2

4

応答のメッセージ変数の名前に3つの「s」があります。したがって、ループ中は機能しますが、存在しない「メッセージ」にアクセスしようとすると失敗します。

于 2013-03-27T09:47:09.193 に答える
1

最初にタイプミスを修正し(メッセージ)、コードを少し書き直すことができます:)

また、 GoogleChromeのJavaScriptデベロッパーツールを使用してください

{
   "messages":{
      "error":["API_CONTROLLER.INVALID_LOGIN_PASSWORD"],
      "warning":[],
      "notice":[],
      "success":[]
   },
   "result":false
}

The jQuery code:

var performLogin = function(){
 return $.getJSON(targetURL, params).done(function(response){

      // TODO - do something with response

      console.log(response.messages);
      console.log(response.messages[error]);
      console.log(response.messages[error][0]);
      console.log(response.messages.error);
      console.log(response.messages.length);
      console.log(response.result);
      console.log(response[messages]);
   });
}
于 2013-03-27T09:59:36.263 に答える