1

このように見えるはずのオブジェクトの配列があります...

[{"Name":"blah","Description":"blah"},{"Name":"blah2","Description":"blah2"}]

Javascript / jQueryを使用して、キーと値のペアを取得するにはどうすればよいですか?私は多くの異なる方法を試しましたが、役に立ちませんでした。長さを取得しようとすると、常に文字数が返され、オブジェクトの実際の数ではなく、各文字を繰り返し処理しますか?これを実行すると、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]が各キャラクターによって綴られているというアラートが返されます。

function DisplayItems(data) {
        $.each(data, function () {
            $.each(this, function (key, value) {
                alert(value);
            });
        });
}

これを見ると、期待しているオブジェクトの配列ではありませんか?文字列を実際に返して、実際に文字列に何が含まれているかを確認し、そこから移動できるようにするにはどうすればよいですか?

**編集:

これは注文を取得するための私の関数です(がらくたを切り取ってアラートを表示します)... jQuery.Ajaxを呼び出し、返されたデータをdisplayOrders(data)に渡します。注文には、アイテムのリストを含むアイテムの複合プロパティがあります。

function displayOrders(data) {
        $('#gdvOrders tbody').empty();
        for (var key in data.d) {
            alert(data.d[key].Items);
}

これは、アラート関数に表示されるdisplayItemsに渡したものです。注文を1つのテーブルに表示し(アイテムを含むいくつかの列を非表示にします)、注文テーブルの行を選択したときに、別のテーブルの各注文のアイテムを表示したいと思います。上記の関数で私は書くことができます...

data.d[key].OrderId

通常どおり表示されます。各アイテムのプロパティを表示するにはどうすればよいですか?

jQuery.Ajax関数はcontent-typeに設定されます:'application / json; charset =utf-8'そしてこれは私が注文を受け取るところです...

[WebMethod]
    public static List<Order> GetOrdersByDept(Department department, Filter filter, DateTime? dateFrom = null, DateTime? dateTo = null)
    {
        return OrderLists.GetOrdersByDepartment((Department)department, (Filter)filter, dateFrom, dateTo);
    }
4

4 に答える 4

0

JavaScript を使用して、単純にfor .. inループを使用します

for(var i = 0; i < data.length; i++) {
    var obj = data[i];
    for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
            alert(key + " = " + obj[key]);
        }
    }
}

ここでフィドル - http://jsfiddle.net/XWsvz/

于 2012-05-09T03:45:41.077 に答える
0

これを見て、私が期待しているオブジェクトの配列ではありませんか? 実際に文字列を返して、実際に何が含まれているかを実際に確認し、そこから移動するにはどうすればよいですか?

オブジェクトが文字列として返される場合は、単純にアラートを出すことができます。ただし、関数に不明なオブジェクトが渡された場合は、いつでもそれを JSON 文字列に変換して戻して、構造を視覚化できるように警告することができます。

function displayItems(data) {
    alert(JSON.stringify(data));
    ...

}

補足として、関数の最初の文字を小文字に変更して、JavaScript の関数の命名規則に合わせました。

于 2012-05-09T03:46:37.903 に答える
0

近くにいるようです:

function DisplayItems(data) {
    console.log('data is: ', JSON.stringify(data));
    $.each(data, function (key, arrayElement, index) {
        console.log('arrayElement ' + index + ' is: ', JSON.stringify(arrayElement));
        $.each(arrayElement, function (key, value) {
            console.log('key: ' + key + ' val: ' + value);
        });
    });
}

http://jsfiddle.net/ux9D8/

あなたのデータを使用すると、次の出力が得られます。

data is:  [{"Name":"blah","Description":"blah"},{"Name":"blah2","Description":"blah2"}]
arrayElement undefined is:  {"Name":"blah","Description":"blah"}
key: Name val: blah
key: Description val: blah
arrayElement undefined is:  {"Name":"blah2","Description":"blah2"}
key: Name val: blah2
key: Description val: blah2
于 2012-05-09T03:48:21.337 に答える