2016-09-27 11 views
0

jQueryオブジェクトをajax経由でWeb APIコントローラに送信しようとしています。ここでJSONオブジェクトからWeb APIへのエラーの送信

は私のjqueryのコードは次のとおりです。

var CurrentOrder = []; 
var lineItem = { 'rowid': '34', 'quantity': '4', 'comment': 'somecomment' , 
       'rowid': '22', 'quantity': '5', 'comment': 'somecomment1'}; 

CurrentOrder.push(lineItem); 

$.ajax({ 
    type: 'PUT', 
    data: JSON.stringify({ SessionCart: CurrentOrder }), 
    contentType: 'application/json; charset=utf-8', 
    url: '/api/Cart/UpdateCart/', 
    //traditional: true, 
    beforeSend: function() { 
     res.container.append(res.loader); 
    }, 
    success: function() { 
     res.container.find(res.loader).remove(); 
     $('.loader').attr('style', 'display:none'); 
     GetSessionCart(); 
    }, 
    error: function() { 
     res.container.find(res.loader).remove(); 
     $('.loader').attr('style', 'display:none'); 
     alert('Current Order could not be updated. Please Try again.') 
    } 
}) 

は、ここに私のモデルです:

public class Cart 
{ 
    public string rowid { get; set; } 
    public string quantity { get; set; } 
    public string comment { get; set; } 

} 

とコントローラ:

[HttpPut, HttpDelete] 
    [ActionName("UpdateCart")] 
    public HttpResponseMessage UpdateCart([FromUri] List<Cart> SessionCart) 
    { 

     //do sth 
    } 

問題は、コントローラヒットを取得しますが、パラメータSessionCartカウントです常に0です。私はラッピングするために引用符を使用して、オブジェクトを文字列化しないようにしました。単一のオブジェクトを渡し、配列ではなく、他のものを渡します。これらのどれも働かなかった。どんな助けでも大歓迎です。

答えて

1

[FromUri]まったくがあるか[FromBody]に変更するべきではありませんどちらか -

[FromUri]はあなたを設定する必要があるように見え、またPUT

対データのためのクエリ文字列を見ていますデータ:

data: JSON.stringify(CurrentOrder),

これに加えて、何Matteo1010を示唆しています。

+0

。ありがとう!問題は[FromUri]とJSON.stringifyでした。良いものを持ってください:D – ToneSwitch

1

私は、JSONが間違っていると思う:あなたは命の恩人です

var lineitem = { 'rowid': '34', 'quantity': '4', 'comment':  'somecomment'} ; 
CurrentOrder.push(lineItem); 
lineitem = { 'rowid': '22', 'quantity': '5', 'comment': 'somecomment1} ; 
CurrentOrder.push(lineItem); 



data: JSON.stringify(CurrentOrder), 
+1

はい、それも問題でした。感謝します :) – ToneSwitch

関連する問題