twD*_*uke 0 javascript jquery post json ihttphandler
我正在构建一个像这样的对象数组:
var postData = [];
$.each(selectedFields, function (index, value) {
var testTitle = 'testing ' + index;
postData.push({title: testTitle, title2 : testTitle});
}
Run Code Online (Sandbox Code Playgroud)
我然后发布它(注意我已经尝试了许多不同的aproaches):
$.post('SaveTitlesHandler.ashx', { form : postData }, function (data) {
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
然后我尝试在处理程序中获取数据...
public class SaveTitlesHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
string json = context.Request.Form.ToString();
}
}
Run Code Online (Sandbox Code Playgroud)
我似乎无法从请求中得到适当的json.有人有任何想法吗?
干杯.
TWD
Dar*_*rov 11
您没有发布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]"];
...
}
Run Code Online (Sandbox Code Playgroud)
如果你想发布真正的JSON,你需要这个:
$.ajax({
url: 'SaveTitlesHandler.ashx',
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(postData),
success: function(result) {
console.log(result);
}
});
Run Code Online (Sandbox Code Playgroud)
然后在处理程序内部从请求输入流中读取:
public void ProcessRequest(HttpContext context)
{
using (var reader = new StreamReader(context.Request.InputStream))
{
string json = reader.ReadToEnd();
}
}
Run Code Online (Sandbox Code Playgroud)
该JSON.stringify方法将javascript对象转换为JSON字符串,它是本机方法内置的现代浏览器.如果要支持旧版浏览器,可能还需要包含json2.js.