将 json 对象数组 POST 到 IHttpHandler

发布于 2024-11-16 07:19:25 字数 672 浏览 4 评论 0原文

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

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的请求。有人知道吗?

干杯。

东德

Im constructing an array of objects like this:

var postData = [];

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

I then post it like this(note that i have tried a number of different aproaches):

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

I then try to get the data in a handler...

public class SaveTitlesHandler : IHttpHandler
{

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

}

I cant seem to get proper json out of the request. Anyone got any idea?

cheers.

twD

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

我不在是我 2024-11-23 07:19:25

您没有发布 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 字符串,它是现代浏览器内置的本机方法。如果您想支持旧版浏览器,您可能还需要包含 json2.js

You are not posting JSON. You are using application/x-www-form-urlencoded. So inside the handler you could access individual values:

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]"];

    ...
}

If you wanted to POST real JSON you need this:

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

and then inside the handler read from the request input stream:

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

The JSON.stringify method converts a javascript object into a JSON string and it is a native method built-in modern browsers. You might also need to include json2.js if you want to support older browsers.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文