2016-07-04 31 views
0

以下のようにJSONでデータ配列を返すスクリプトがあります。POST JSON配列からASP.NET WebMethod

[ 
    {"ItemID":"10319","ItemCode":"ITEM-010318","Qty":"1","custRef":"12 - Mitsubishi Fighter FK61F"}, 
    {"ItemID":"10933","ItemCode":"ITEM-010932","Qty":"1","custRef":"12 - Mitsubishi Fighter FK61F"},{"ItemID":"10537","ItemCode":"ITEM-010536","Qty":"1","custRef":"12 - Mitsubishi Fighter FK61F"}, 
    {"ItemID":"14863","ItemCode":"ITEM-014862","Qty":"1","custRef":"12 - Mitsubishi Fighter FK61F"}, 
    {"ItemID":"14864","ItemCode":"ITEM-014863","Qty":"1","custRef":"12 - Mitsubishi Fighter FK61F"} 
] 

このデータは私のウェブメソッドは、この

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public void AddItemsToCart(string [] itemID, string [] itemCode, string [] Qty, string [] custRef) 
のように見えます

$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "OrderFormServices.asmx/AddItemsToCart", 
    data: JSON.stringify(cartData), 
    dataType: "json" 

}); 

次のように私は、その後、AJAXを経由して私のWebMethod属性にデータをプッシュcartData

という変数に格納されます

しかし、データを試してPOSTすると、コンソールにエラーが表示されます私は頭や尾を作ることができません!誰かそれにいくつかの光を当てることはできますか?

Type 'System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=4.0.0.0, 
Culture=neutral, PublicKeyToken=b77a5c561934e089], 
[System.Object, mscorlib, 
Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]' 
is not supported for deserialization of an array. 

答えて

1

このメソッドでは、フィールドごとに配列が必要です。 CartItemは、これらすべてのフィールドを持つクラスです

public void AddItemsToCart(CartItem[] items) 

: だから、どちらか何かのようになり方法を変更します。

OR

編集Webメソッドは次のように期待するようJSが通過する:

var data = { 
itemID : [], 
itemCode:[], 
Qty:[], 
custRef:[]}; 
//here fill all array with each one of the items in the json array. 
$.ajax({ 
    type: "POST", 
    contentType: "application/json; charset=utf-8", 
    url: "OrderFormServices.asmx/AddItemsToCart", 
    data: JSON.stringify(data), 
    dataType: "json" 

}); 
+0

おかげで、私はあなたの第二の提案どおりに編集したと私は今 'cartData.pushを(使用しています{ 'はアイテムID':itemIdVal、 'をitemCode':itemCodeVal、 '数量':qtyVal、 'custRef':custRefVal }); 'しかし、これは動作していないよう - cartData.pushは関数ではありません? –

+0

これはうまくいきません。 cartData.push({'itemID':[itemIdVal]、 'itemCode':[itemCodeVal]、 'qty':[qtyVal]、 'custRef':[custRefVal]} ); また、パラメータの名前がWebメソッドと同じCaseであることを確認してください(例:数量)。 – MoustafaS

+0

'cartData.push'は関数ではありませんか? –

関連する問題