2013-06-27 83 views
1

顯然我做錯了什麼,嘗試了一切。

最初我需要發送對象數組到asp.net mvc控制器使用角的$ http,它沒有工作。

然後我試圖使用jQuery。我試過$.get$.post$.ajax方法使用不同的參數(傳統的,非傳統的,具有dataType:'json',沒有它 - 仍然無法通過價值這件事是我的命

$.ajax(
    url: '/Home/Foo' 
    data: items: [{'name':'some'},{'name':'other'}]) 

public JsonResult Foo(Item[] items) 
{ 
    return Json(items, JsonRequestBehavior.AllowGet); 
} 

public class Item 
{ 
    public string name { get; set; } 
} 

的最好的東西。我可以把它弄出來 - 它承認的項目,如項目[]數組,但每個name值爲null

+0

'數據:項:[{ '名稱': '某些'},{ '名稱': '其他'}]'是不正確JSON語法。試試'data:{'items':[{'name':'some'},{'name':'other'}]}'。 –

回答

1

根據本文

http://encosia.com/asmx-scriptservice-mistake-invalid-json-primitive/

它應該是一個字符串:

$.ajax(
    url: '/Home/Foo' 
    data: "{ 'items': [{'name':'some'},{'name':'other'}] }" 

現在使用JSON.stringify應該可以解決我的問題。仍然要嘗試使用$ http

+0

我認爲您鏈接的文章引用了「ASMX」服務操作,而不是MVC4 HTTP服務操作。我對MVC4使用了原始的JSON數據(即不是字符串);它應該可以工作。 –

1

當將JSON字符串傳遞給MVC時,請務必設置一個內容類型application/json。否則,MVC將期望以URLEncoded格式取代JSON。

儘管JSON通常在傳遞數組方面效果最好,所以您應該選擇正確的路徑。

1

您的data字符串(即data: items: [{'name':'some'},{'name':'other'}])無效JSON語法,而您的自我回答中的字符串化JSON字符串的語法是正確的。

你不應該把你的對象轉換成JSON字符串,並且標準的JavaScript對象應該可以工作。

嘗試切換,要:

$.ajax(
    url: '/Home/Foo', 
    data: { 
     'items': [{'name':'some'},{'name':'other'}] 
    } 
) 
相關問題