3

再投稿して申し訳ありませんが、私はそれがひどく必要であり、それは重要です! 同じ投稿が他にもありますが、回答済みの質問にフラグを立てましたが、まだ修正方法がわかりません!

私はこのajax応答を持っています:

[{"error":"uname","message":" \u05e9\u05dd \u05de\u05e9\u05ea\u05de\u05e9 \u05d0\u05d9\u05e0\u05d5 \u05d9\u05db."},{"error":"email","message":" \u05d0\u05e0\u05d0 \u05d4\u05db\u05e0\u05e1 \u05d0\u05d9\u05de\u05d9\u05dc"},{"error":"password","message":" \u05e9\u05d3\u05d4 \u05d6\u05d47"},{"error":"oldpassinp","message":" \u05d4\u05e7\u05e9 \u05e1\u05d9\u05e1\u05de\u05d0 \u05e9\u05dc."}]

そして、このような私の入力フィールド:

<input type="text" id="fname" name="fname" value="" class="inplaceError"/><span id="fname_error"></span>

スパンにはメッセージ エラーが保持されます。

私はこれをクライアント側で使用します:

 var data_array = JSON.parse("["+data+"]");
 // tryed either var data_array = JSON.parse(data); not working too

  for (var i in data_array )
  {
     $("#"+data_array[i].error+"_error").html(data_array[i].message);
     $("#"+data_array[i].error).css({"border":"1px solid red"});
  }    

そのコードの何が問題なのですか? 各フィールドのエラーを追加するのではなく、助けてください。

私はJavaScriptの初心者です。

4

2 に答える 2

3

ajax リクエストのデータ型が「json」の場合、レスポンスは json 配列になります

$.each(data, function(idx, error){
    $("#"+error.error+"_error").html(error.message);
})
于 2013-08-13T05:27:03.493 に答える
1

JSON.parseJSON オブジェクトに変換する必要がある JSON の文字列を受け取る場合にのみ使用されます。あなたの例では、JSON オブジェクトを提供しています。ajax リクエストのレスポンスで JSON を受け取っている場合、解析は必要ありません。

この場合、特に文字列連結では、データを角かっこで囲む必要もありません。

この場合、次のように JSON オブジェクト自体を反復処理できます。

for(var i in data) {
    $("#"+ data[i].error+"_error").html(data[i].message);
    $("#"+ data[i].error).css({"border":"1px solid red"});
}

また、JSON のサンプル データにはfnameキーがないようunameです。

以下で説明するように、反復には jQuery の each メソッドを使用することもできますが、for ループで十分です。

それが役立つことを願っています。

于 2013-08-13T05:40:41.193 に答える