javascript - 将 json 对象数组 POST 到 IHttpHandler

标签 javascript jquery json post ihttphandler

我正在构造一个像这样的对象数组:

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/

相关文章:

javascript - 为什么我在此函数定义中得到 “Error 25: Expected: ;”?

javascript - Typeface.js 无法在 Internet Explorer 中呈现

javascript - 如何在单击网页中的左/右导航按钮时将缩略图偏移固定数字(比如 5)?

javascript - jQuery - 如何在事件触发后暂时禁用 onclick 事件监听器?

json - 将复杂的JSON发布到ASP.NET Core Controller

Python3 : JSON POST Request WITHOUT requests library

java - 将 JSONObject/JSONArray 从 AsyncTask 传递到 UI 线程

javascript - 如何在 Bootstrap 模式中提交提交数据?

javascript - Jquery验证: How to validate that all or none of a group of textboxes have values?

javascript - 验证其他字段后创建 strip 支付 token