我正在构造一个像这样的对象数组:
var postData = [];
$.each(selectedFields, function (index, value) {
var testTitle = 'testing ' + index;
postData.push({title: testTitle, title2 : testTitle});
}
然后我像这样发布它(请注意,我尝试了许多不同的方法):
$.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
最佳答案
您没有发布 JSON。您正在使用application/x-www-form-urlencoded
。因此,在处理程序内部,您可以访问各个值:
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]"];
...
}
如果你想 POST 真正的 JSON,你需要这个:
$.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 字符串,它是现代浏览器内置的 native 方法。您可能还需要包括 json2.js如果您想支持旧版浏览器。
关于javascript - 将 json 对象数组 POST 到 IHttpHandler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6421351/