【问题标题】:Issue with AJAX Post Method to use in code-behind在代码隐藏中使用 AJAX Post 方法的问题
【发布时间】:2020-07-30 12:19:53
【问题描述】:

我正在寻求有关通过 Ajax 方法将 JSON 数据发送到 url 的帮助,然后我可以访问以使用其值。我想我拥有大部分组件,但我不确定一旦我使用我的 Web 方法该做什么。在访问我的 Web 方法之前是否有任何错误?此外,我在 Stack Overflow 上搜索了大约 20 个类似的示例,虽然其中一些可能是我的问题的解决方案,但我要么不理解,要么错过了它。

我的脚本

function UpdatePeople() {
        var PeopleToUpdate = {
            "people": [
                { "name": "John", "age": "17" },
                { "name": "Harry", "age": "19" },
                { "name": "Steve", "age": "23" }
            ]
        };

        jQuery.ajax({
            url: '_ajax_updatepeople.aspx/UpdateOnDemand',
            type: "POST",
            data: PeopleToUpdate,
            dataType: "json"
        });
    }

我的页面 (C#)。

[WebMethod]
public string UpdateOnDemand(List<string> PeopleToUpdate)
{
    // what do i do now once i am here? How can i access the data I have sent through?
}

【问题讨论】:

  • 您正在尝试将人员对象列表发送到服务器,但您的UpdateOnDemand 接受字符串列表?你想发送人名还是什么?也许你想向所有人发送对象?

标签: c# jquery asp.net ajax xmlhttprequest


【解决方案1】:

这里的问题是您试图将people 的列表发送到服务器,但是您的UpdateOnDemand 方法接受string 的列表。我假设您想将人员列表发送到服务器,并且您在服务器上有 people 类。另外,您需要使用JSON.stringify发送人员数据列表:

所以,客户端:

function UpdatePeople() {
    var PeopleToUpdate = [
            { "name": "John", "age": "17" },
            { "name": "Harry", "age": "19" },
            { "name": "Steve", "age": "23" }
        ];

    jQuery.ajax({
        url: '_ajax_updatepeople.aspx/UpdateOnDemand',
        type: "POST",
        data: JSON.stringify({'PeopleToUpdate' : PeopleToUpdate }),
        dataType: "json"
    });
}

服务器端:

[WebMethod]
public string UpdateOnDemand(List<People> PeopleToUpdate)
{
    //..
}

而服务器端的People 类应该是这样的:

public class People
{
    public string name { get; set; }

    public string age { get; set; }
}

【讨论】:

  • 嗨塞利姆。感谢您的帖子,我认为您让我走上了正确的道路。我已经使用了您建议的更改,现在在运行时我将此输出到控制台。未捕获的 TypeError:JSON.Stringify 不是函数。有什么想法吗?
  • 我尝试从 .ajax 调用的数据属性中删除 JSON.Stingify,但它至少没有“错误”。不确定另一端的数据格式是否正确,但我猜不是。
  • 好的,我提供了更多疑难解答。它应该是带有小写's'的Stringify吗?我现在已经超越了之前失败的地方,现在有另一个我应该能够解决的错误(500 错误),但我认为它可能是“字符串化”而不是“字符串化”?
  • 是的,我的错,应该是小写的's'。我已经更新了我的答案
猜你喜欢
  • 2013-08-16
  • 2015-08-12
  • 1970-01-01
  • 2011-08-23
  • 2023-04-02
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多