web-dev-qa-db-ja.com

json配列jqueryをループする

これをループして「名前」の値を取得しようとしています。これは私が現在持っているものですが、機能していないようです。ここに投稿されたものから他のいくつかを試しましたが、何も機能していないようです。

    $.get("/get_names", {campaign_id: $('select[name="id"]').val()}, 
                function(data){
                    $.each(data, function(i, item) {
                        alert(item);
                    });
                }
   );

返されるJSON:

   [
           {
              "name":"age"
           },
           {
              "name":"asdf"
           },
           {
              "name":"drivername"
           },
           {
              "name":"drivers"
           },
           {
              "name":"firstname"
           },
           {
              "name":"gender"
           },
           {
              "name":"lastname"
           },
           {
              "name":"make"
           },
           {
              "name":"model"
           },
           {
              "name":"vehicles"
           },
           {
              "name":"year"
           }
        ]

私は使用してみました:

item.name
item[i].name

助言がありますか?

ありがとうございました!

44
dzm

文字列をJSONとして解析する必要があります(data[0] == "["は、dataが実際にオブジェクトではなく文字列であることを示しています)。

data = $.parseJSON(data);
$.each(data, function(i, item) {
    alert(item);
});
120
Rob W

.get()メソッドから.getJSON()メソッドに変更することもできます。jQueryはdataとして返された文字列をjavascriptオブジェクトや配列に解析します他のjavascriptオブジェクト/配列のように参照します。

上記のコードを使用して、_.get_を_.getJSON_に変更した場合、配列の各要素について_[object Object]_のアラートを取得する必要があります。アラートをalert(item.name)に変更した場合、名前が取得されます。

10
Kevin B

サーバーからjsonオブジェクトを返すとは思わない。ただの文字列。

戻りオブジェクトのdataTypeがjsonである必要があります

1
Royi Namir