2012-05-09 16 views
1

動作していない私はこのように見ているべきであるオブジェクトの配列を持っている...反復が

Javascriptを/ jQueryのを使用して
[{"Name":"blah","Description":"blah"},{"Name":"blah2","Description":"blah2"}] 

、どのように私は、キー/値のペアを得ることができますか?私はいろいろな方法を試しましたが、無駄です。長さを取得しようとすると、常に文字カウントが返され、オブジェクトの実際の数ではなく、各文字が繰り返されます。私はこれを実行すると、それはそれはオブジェクトの配列ではない、私はこれを見ていることを今... [オブジェクトのオブジェクト]、[オブジェクトのオブジェクト]のアラートは、各文字で綴ら

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

を返しI期待していますか?実際にその文字列を実際に見ることができるように、実際に文字列を返すにはどうすればいいでしょうか?

** EDIT:

これは(がらくたをカットし、あなたに警告を示す)の受注を得るために、私の関数である...私はjQuery.Ajaxを呼び出し、displayOrders(データ)に返されたデータを渡します。オーダーにはItemのリストを含むItemの合成プロパティがあります。

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' と私は...

JavaScriptを使用して
[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); 
    } 

答えて

0

からの注文を取得する場所これは、単に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/

+0

私は私の側にそれを実行したときにこんにちは、あなたのソリューションはフィドルに完璧に動作しますが、ありません。私はそれを正確にコピーします。 http://jsfiddle.net/XWsvz/には、関数に渡すデータがありますが、ループに入れますが、各プロパティの値を表示するのではなく、プレーンテキストであるかのように各文字を繰り返し処理します。 。私は何時間もこのことを理解しようとしていました.Lol ... –

0

今私はこれを見て、それは私が期待しているオブジェクトの配列ですか?実際にその文字列を実際に見ることができるように、実際に文字列を返すにはどうすればいいでしょうか?

オブジェクトが文字列として返されている場合は、単に警告することができます。しかし、あなたの関数が未知のオブジェクトが渡されている場合、あなたは常にバックJSON文字列に変換することができますし、構造を可視化することができるようにそれを警告:追記として

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

} 

、私はの最初の文字を変更しましたあなたの関数は、JavaScriptの関数の命名規則に合致する小文字に変換されます。私にはうまく動作します

+0

気付いていただきありがとうございます、通常私はそのラクダのケーシングを使用しますが、何らかの理由でこの1つではありませんでした。また、 "[object、Object]"という文字列を表示するだけで、基本的には引用符で囲まれています。 –

+0

OK、JSONはどこから届いていますか?サーバー?その場合は、FirebugまたはChrome Debuggerの[NET]タブのレスポンスを調べて、実際にJSONを取得しているかどうかを確認してください。また、サーバーがMIMEタイプ「application-x/json」または「application/json」を使用してオブジェクトを戻していることを確認します。 – jmort253

+0

あなたが見るべきより多くの情報で質問を更新しました。 –

0

、あなたがキーfiddle

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

これは、前のものと同じものを返しますが、その前に0が付いています。私が元々行ってきたことは、返されたJSONオブジェクトがテーブルに移入され、そのプロパティの1つに他のオブジェクトの配列が保持されていました。そのプロパティの列は、この[オブジェクト、オブジェクト]、[オブジェクト、オブジェクト]を返すものです... –

+0

@ user1066133 'data'はオブジェクトの配列ではありませんか?オブジェクトの配列を取得しようとしていますか? – Musa

+0

私はもっと詳細な質問を更新して、より明確な理解を試みました。 –

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 
+0

コンソールディスプレイ データは次のとおりです: "[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]、[オブジェクトオブジェクト]"配列要素を未定義です: "["キー:0 val:[と同様。 –

+1

あなたのデータで私のために働く、あなたは私のjsfiddleをチェックして、あなたの最後に何が違うのかを教えてくれますか? –

1

これが働いている参照してください:

data=[{"Name":"blah","Description":"blah"},{"Name":"blah2","Description":"blah2"}] 
data.forEach(function(i,j){ 

console.log("Name :"+i.Name+" Description :"+i.Description); 


})