2011-12-19 3 views
1

なしJavaScriptを使用して、アレイ内の構文解析JSON配列を確認してくださいどのようにフレーズタイトルをことではなかったが、ここに私の問題です:インデックス

ここでは私のjavascriptです:ここでは

$.post("register", element.serialize(), 
     function(data){ 
      if(data.success == "true"){ 
          // Do whatever 
      } else if (data.success == "false"){ 

       for (i = 0; i < data.errors.length; i++){ 
         // This is what I need to change  
         alert(data.errors[i][0]); 
       } 
      } 
     }, "json"); 

は、着信JSON文字列です:分割

{"success":"false","errors":{"username":"error with username","email":"error with email"}} 

、それは次のようになります。

errors: { 
    email: "error with email" 
    username: "error with username" } 
success: "false" 

アラートに「電子メールのエラー」と「ユーザー名のエラー」が表示されます

何もしていないようです。

おかげ

+0

トライ警告(data.errors.username)は、 – Unknown

+0

ご迷惑をおかけして申し訳ありませんが、インデックスが何であるか必ずしもわかりません。私は "電子メール"または "ユーザー名"を知らずに文字列を表示したい – mike

+0

以下のいくつかの答えは、問題を解決する、ありがとう皆 – mike

答えて

1

data.errorsは配列ではありません。

data.errors.username 
data.errors.email 

あなたはこれらの2つのプロパティで何をしたいのですか、あなたの質問からは不明ですが、それはそれらのアクセス方法です。

あなたはエラーの性質を反復処理するオブジェクト場合、あなたはこのようにそれを行うことができます。

for (var key in data.errors) { 
    // data in data.errors[key] here 
} 
+0

これは、トリック、ありがとう – mike

0

for (in)ループを使用してください。これにより、オブジェクトのプロパティを繰り返し処理できます。

var msgs = []; 
for (var error in errors) { 
    msgs.push(errors[error]); 
} 
2

問題は、あなたのerrorsプロパティは、プロパティを持つarrayしかしobjectではないということです。 ここでは、使用すべきコードです:

alert(data.errors.email); 

とオブジェクトの有効array宣言、[]の点に注意してください。

errors: [ 
    { email: "error with email", username: "error with username" }, 
    { email: "error with email 2", username: "error with username 2" } 
] 
関連する問題