【问题标题】:How to send JSON object to asp.net web service and process the data there?如何将 JSON 对象发送到 asp.net Web 服务并在那里处理数据?
【发布时间】:2010-10-28 04:00:56
【问题描述】:

我在 web kit 浏览器中使用本地数据库并从数据库中获取数据,我有以下代码:

function synchronise() {
        myDB.transaction(
        function (transaction) {
            transaction.executeSql("SELECT * FROM Patients;", [], synchroniseHandler, errorHandler);
    }
);

我现在尝试使用 synchroniseHandler 将所有行发送到 Web 服务并在那里处理数据。

function synchroniseHandler(transaction, results) {
    for (var i = 0; i < results.rows.length; i++) {
        var row = results.rows.item(i);
        var patient = new Object();

        patient.name = row['name']
    patient.address = row['address']
        patient.city = row['city']
    patient.state = row['state']
        patient.zip = row['zip']
    patient.phone = row['phone']

        $.ajax({
            type: "POST",
            url: "MyService.asmx/synchronise",
            data: JSON.stringify(patient),
            contentType: "application/json; charset=utf-8",
            dataType: "json",
        success: function (msg) {
                alert("success");
            },
            error: function (xhr, status) {
                alert("fail" + status);
            }
        });
    }
}

但是它总是说“错误”失败

这是一个 ASP.NET 2.0 webb 应用程序,但我使用 JSON.NET,我的 webmethod 获取数据是

[WebMethod]
        public void synchronise(string patient)
        {
        JObject o = JObject.Parse(patient);
                string name = (string)o["name"];
              string address = (string)o["address"];
        string city = (string)o["city"];
                string state = (string)o["state"];
                string zip = (string)o["zip"];
                string phone = (string)o["phone"];

现在我没有使用 ajax,但有 JavaScript 函数,它可以获取所有行,然后在我单击按钮时将它们插入远程数据库并且它可以工作。但是,我正在尝试在不回发的情况下自动插入这些内容。

关于如何让它发挥作用的任何建议?

编辑: 似乎错误来自网络服务:

Failed to load resource: the server responded with a status of 500 (Internal Server Error)

System.InvalidOperationException: Request format is invalid: application/json; charset=UTF-8.

   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()

   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()

编辑2... 在 web.config 中添加了对 httppost 的支持并摆脱了 加载资源失败:服务器响应状态为 500 (Internal Server Error)

【问题讨论】:

  • 究竟是什么“失败说'错误'”?这是来自你的回调函数(应该返回“失败”+状态而不是“错误”,所以我很困惑)?换句话说,错误信息是什么,它来自哪里?
  • 它是:error: function (xhr, status) { alert("fail: " + status);并且状态消息只是“错误”。我也很困惑,我第一次这样做嘿。

标签: asp.net jquery ajax web-services


【解决方案1】:

您的 Web 服务方法需要一个字符串作为参数。您正在传递一个复杂类型。在服务器上定义一个匹配类型并将其用作参数类型。您不需要照原样从 JSON 字符串创建对象。

此处删除了危险链接

【讨论】:

  • 谷歌浏览器将 encosia.com 标记为危险:前面的站点包含恶意软件 - 目前在 encosia.com 上的攻击者可能会尝试在您的计算机上安装危险程序,以窃取或删除您的信息(例如,照片、密码、消息和信用卡)。
猜你喜欢
  • 2011-02-08
  • 2014-11-25
  • 2012-10-22
  • 1970-01-01
  • 2016-12-22
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多