2012-03-19 3 views
1

私はちょっと立ち往生しましたが、これはユーザーエラーでなければなりません。ある意味では次のように動作します。これは選択肢に新しいオプションを追加していますが、JSONレスポンスのすべての文字に対して新しいオプションが用意されています。JSON配列オブジェクトがjQueryから正しく読み込まれない

選択フォーム

{

[

"

N

メートル

電子

のように。なぜこれが起こっているの

<script type="text/javascript"> 
    $(document).ready(function() { 
     $.ajax({ 
      type: 'POST', 
      contentType: 'application/json; charset=utf-8', 
      url: '/MyWebService/MyWebService.asmx/GetDays', 
      dataType: 'json', 
      data: '{"_category":"Administration"}', 
      success: function (response) { 
       // Clear the list and add an instructional item... 
       $("#FormsSelect").get(0).options.length = 0; 
       $("#FormsSelect").get(0).options[0] = new Option("Select form", "-1"); 
       // Add each element returned from the server... 
       $.each(response.d, function (index, category) { 
        $('#FormsSelect').append(
        $('<option></option>').val(index).html(category) 
        ); 
       }); 
      }, 
      error: function (request, error) { 
       alert("An error occurred: " + request.status + "\n" + request.responseText); 
      } 
     }); 
    }); 
</script> 

思考:ここ

{"d":"[{\"Name\":\"Monday\"},{\"Name\":\"Tuesday\"},{\"Name\":\"Wednesday\"}]"} 

ページのソースです:

FirebugのLiteはとしてJSON応答が記録されますか?

ありがとう、 Aaron。

答えて

3

注意してください。文字列をループすると、文字単位で取得されます。

あなたは配列として文字列を解析する場合は、jQuery parseJSON methodを使用して、このような何かを行う必要があります。

var arr = $.parseJSON(response.d); 
$.each(arr, function(index, category) { 
// ... 

はまた、あなたはおそらく

.html(category.Name); 

の代わりをしたいということに注意してください

.html(category); 
+0

ありがとうピーター、それはトリックを行った。私は十分な担当者がいる場合、私はこれを答えとしてマークしたいと思います。 – Aaron

+0

@Aaron upvoteに十分な担当者がいない場合は、回答の横にある緑色のチェックマークを押してください。 –

0

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

"[{\"Name\":\"Monday\"},{\"Name\":\"Tuesday\"},{\"Name\":\"Wednesday\"}]" 

が文字列であるか

$('<option></option>').val(index).html(category.Name) 
関連する問題