0

私は最初の (EVER!) JSON プロジェクトに取り組んでおり、JSON オブジェクトから特定のデータを取得する方法を知りたいと思っています。私はそれをインポートして、そのデータを参照する方法を見つけました (スタック オーバーフローに感謝します!)。私は今それを行うことができます.以下のコードは私が得た限りです. データを通過するアラートがたくさんあります。ここで行う必要があるのは、実際にループして、以下に示す JSON の値フィールドを評価することです。それだけを選択する方法と、それをループする方法がわかりません。data.films.value.value や data.films.value.value[0] などを試しましたが、それに近いものだと確信していますが、データを取得する方法がわかりませんその特定の要素を通常の文字列のように使用できるようにするフォームに変換します。私が最終的にやろうとしているのは、各映画を比較することです。

{
    "

films": [{
        "label": "34",
        "value": "34",
        "currently_streaming": "1",
        "full_streaming_url": "http://www.url.com",
        "url": "http://www.url.com"},
    {
        "label": "A Different Color",
        "value": "A Different Color",
        "currently_streaming": "1",
        "full_streaming_url": "http://www.url.php",
        "url": "http://www.url.com"}]
}​

そして、それをロードするコードは次のとおりです。成功として返されますが、JSON オブジェクトからデータを取得できません。

 $(document).ready(function(){
    $.ajax({
        dataType: 'json',
        beforeSend : function() {
           console.log('Before Ajax Request Starts !!');
        },
        success: function(data) {
            console.log(data);
            alert("Edddddddd");
            $.each(data.films, function(i, object) {
            $.each(object, function(property, value) {
            alert(property + "=" + value);
    });
});
        },
        error : function(jqXHR, textStatus, errorThrown) {
             alert("Error occurred: " + errorThrown);
        },
         beforeSend : function() {
           console.log('Ajax Request Complete  !!');
        },
        url: 'test.php'
    });  
});

どんな助けでも大歓迎です!

更新 私は今、ここにいる皆さんから得た素晴らしいアドバイスを使用してループしようとしています. これは私が今持っているものです:

    var test="34x25x36";
 $(document).ready(function(){
    $.ajax({
        dataType: 'json',
        beforeSend : function() {
           console.log('Before Ajax Request Starts !!');
        },
        success: function(data) {
            console.log(data);
            alert("Edddddddd");
            $.each(data.films, function(i, object) {
            $.each(object, function(property, value) {
            //alert(property + "=" + value);
            for (i=0; i<data.films.length; i++){
            var theFilm = (data.films[i].value);
            if (theFilm === test){
            document.write("Your movie is hot");
            document.write(theFilm);
            }
            else {
            }
            }
    });
});
        },
        error : function(jqXHR, textStatus, errorThrown) {
             alert("Error occurred: " + errorThrown);
        },
         beforeSend : function() {
           console.log('Ajax Request Complete  !!');
        },
        url: 'test.php'
    });  
});

ループから印刷しようとすると、うまくいくように見えますが、問題が発生しています。最終的には、このデータをユーザー入力と比較する必要があります。ユーザー入力は、テスト目的で var test として上部に定義しました。各変数を比較してテストしたいのですが、何らかの理由で、各変数をテストするように設定しているようです。私のループに何か問題がありますか?

4

4 に答える 4

0

試す

films[0].labelあなたに34を与えるでしょう

反復するには、使用する必要があります

$.each(data.films, function(i, object) { 
// And Not 
$.each(json.films, function(i, object) {

これを試して

更新されたコード:

簡単なarrachアイテムはオブジェクトに変換されるため、それらの内部にアクセスするには、もう1つのループを作成する必要があります..

$.each(data.films, function() {
    $.each(this, function(j, val) {
        console.log('Key - ' + j + ' :: Value - ' + val);
    });
});​

これはあなたの場合にうまくいくはずです

function(data) {
    console.log(data);
    alert("Edddddddd");
    $.each(data.films, function(i, object) {
        $.each(object, function(property, value) {
            alert(property + "=" + value);
        });
    });
}​

// For ループの使用

var keys = ["label", "value", "currently_streaming", "full_streaming_url", "url"]
for (i = 0; i < data.films.length; i++) {
    for (j = 0; j < keys.length; j++) {
        alert( 'Key - ' + keys[j] + ' :: Value - ' + data.films[i][keys[j]] )  ;
    }
}​

フィドルをチェック

于 2012-09-21T18:12:05.970 に答える
0

これを試して:

success: function(data) {
  for (var item in data.films) {
    alert(item.label);
  }
}
于 2012-09-21T18:13:08.547 に答える
0
{
    "films": [{  // <-- to access this data.films
        "label": "34",  // to access this data.films[0].label - this is the first object in the array
        "value": "34",  // to access this data.films[0].value
        "currently_streaming": "1", //  // to access this data.films[0].currently_streaming
        "full_streaming_url": "http://www.url.com", // and so on
        "url": "http://www.url.com"} // and so on
    {
        "label": "A Different Color", // to access this data.films[1].label - this is the second object in the array
        // arrays are zero indexed
        "value": "A Different Color", // to access this data.films[1].value
        "currently_streaming": "1",
        "full_streaming_url": "http://www.url.php",
        "url": "http://www.url.com"}]
}​

したがって、ループするとき-配列がある場所をループしたい..

$.each(data.films, function(k,v){
    console.log(v.value); // <-- this will give you the value for both
    // now that you're here you can get value for each property by 
    // v.label
    // v.value
    // v.currently_streaming
    // v.full_streaming_url
    // v.url
});

http://jsfiddle.net/KPkWe/

于 2012-09-21T18:52:38.943 に答える
0

data.filmsの代わりにjson.filmsをループしようとしました...

于 2012-09-21T18:16:08.017 に答える