2011-06-21 71 views
0

林構建對象的數組這樣的:POST JSON對象陣列的IHttpHandler

var postData = []; 

$.each(selectedFields, function (index, value) { 
    var testTitle = 'testing ' + index; 
    postData.push({title: testTitle, title2 : testTitle});   
} 

我然後發佈它像這樣(注意,我已經嘗試了許多不同的aproaches的):

$.post('SaveTitlesHandler.ashx', { form : postData }, function (data) { 
    console.log(data); 
}); 

然後我試圖讓在處理數據......

public class SaveTitlesHandler : IHttpHandler 
{ 

    public void ProcessRequest(HttpContext context) 
    { 
     string json = context.Request.Form.ToString(); 
    } 

} 

我似乎無法得到適當的JSON了要求。任何人有任何想法?

歡呼聲。

twD

回答

11

您沒有發佈JSON。您正在使用application/x-www-form-urlencoded。如果你想後,你需要這個真正的JSON

public void ProcessRequest(HttpContext context) 
{ 
    var title1 = context.Request["form[0][title]"]; 
    var title2 = context.Request["form[0][title2]"]; 

    var title3 = context.Request["form[1][title]"]; 
    var title4 = context.Request["form[1][title2]"]; 

    ... 
} 

:所以處理程序中,你可以訪問各個值

$.ajax({ 
    url: 'SaveTitlesHandler.ashx', 
    type: 'POST', 
    contentType: 'application/json; charset=utf-8', 
    data: JSON.stringify(postData), 
    success: function(result) { 
     console.log(result); 
    } 
}); 

,然後從請求輸入流中讀取的處理程序中:

public void ProcessRequest(HttpContext context) 
{ 
    using (var reader = new StreamReader(context.Request.InputStream)) 
    { 
     string json = reader.ReadToEnd(); 
    } 
} 

JSON.stringify方法將JavaScript對象轉換爲JSON字符串,並且它是本機方法內置的現代瀏覽器。如果您想支持舊瀏覽器,則可能還需要包含json2.js

+0

你知道一種簡單的方式來發布數據爲JSON嗎? – twDuke

+0

@twDuke,是的,例子即將到來。查看我的更新。 –

+0

當我嘗試Request.Form只是一個空字符串? 我錯過了什麼? – twDuke