0

ソースから受け取る次のオブジェクトを受け取ります -

["road",[["road",53,"0E"],["roadtrip",53,"1E"],["roadrunner",53,"2E"],["roadster",53,"3E"],["roadside",53,"4E"],["roadrage",53,"5E"],["roadcycling",53,"6E"],["roadsideamerica",53,"7E"]],{"k":1,"q":"lpxvQlflqTsJ-2_PMBLImSpu1PU"}]

オブジェクトから取得したい値:

road, roadtrip, roadrunner, roadster and so on.

そしてここにコードがあります

    $('#query').autocomplete({
        source: function( request, response ) {
        $.ajax({
        type: "GET",
        url: , // url for the source
        dataType: "json",
        data: { 
            "tags" : request.term
        },
        success: function( data ) {
            related = data[1];
            response(data[1][0]);
        }
        });
    }

しかし、オブジェクトの最初の配列から値のみを取得しますか? たとえば。road OE

その値を取得するためにどのように反復する必要がありますか?

4

3 に答える 3

1

これはオブジェクトではなく配列であり、JSONLintを使用すると次のようになります。

[
    "road",
    [
        [
            "road",
            53,
            "0E"
        ],
        [
            "roadtrip",
            53,
            "1E"
        ],
        [
            "roadrunner",
            53,
            "2E"
        ],
        [
            "roadster",
            53,
            "3E"
        ],
        [
            "roadside",
            53,
            "4E"
        ],
        [
            "roadrage",
            53,
            "5E"
        ],
        [
            "roadcycling",
            53,
            "6E"
        ],
        [
            "roadsideamerica",
            53,
            "7E"
        ]
    ],
    {
        "k": 1,
        "q": "lpxvQlflqTsJ-2_PMBLImSpu1PU"
    }
]

最初のキーは文字列「road」、2番目は配列、最後はオブジェクトであることがわかります。

探しているアイテムは、メイン配列の2番目のキーにある配列の最初のキーです。

次のようなものを試してください:

$('#query').autocomplete({
    source: function( request, response ) {
    $.ajax({
    type: "GET",
        url: , // url for the source
        dataType: "json",
        data: { 
            "tags" : request.term
        },
        success: function( data ) {
            var terms = [];

            for (var i=0; i < data[1].length; i++) {
                terms.push(data[1][i][0]);
            }

            respond(terms);
        }
    });
}
于 2012-07-06T17:19:30.467 に答える
1

これにより、探しているすべての要素が得られるはずです。それらをどのように反復するかはあなた次第です:

jQuery.map(data[1], function(item) {return item[0];});
// output: ["road", "roadtrip", "roadrunner", "roadster", ... ]

ところで、「これはオブジェクトではなく、配列です」と言う人にとっては、配列は JS のオブジェクトの型です。

-- スコット

于 2012-07-06T17:46:39.523 に答える
0

提供されたデータはオブジェクトではありません。角かっこ「[..]」を使用して示される配列があります。さらに、オブジェクトにはプロパティと値があります{ "road": 53 }

適切に形成されたオブジェクトがあると仮定すると、jQueryで$ .getJSON()関数を利用できます。

次に、有効なオブジェクトをトラバースし、それに応じて目的のプロパティにアクセスできます。

HTML

<div></div>

jQuery:

var obj = {     
    "road": [
        {
            "name": "roadtrip"
        },
        {
            "name": "roadrunner"
        }
    ]
};

var data = obj.road;

for(var i=0; i < data.length; i++){
    $('div').append(data[i].name + '<br>');
}

デモ: http: //jsfiddle.net/6S6DJ/

于 2012-07-06T17:19:35.487 に答える