【问题标题】:ASP.NET AJAX to Code behind function call ErrorASP.NET AJAX 到代码背后的函数调用错误
【发布时间】:2012-01-23 19:27:11
【问题描述】:

我正在使用以下调用将数据发送回服务器:

$.ajax({
  type: "POST",
  url: "MyTestPage.aspx/UpdateData",
  data: updates,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function (msg) {
                 alert('Success!');
  },
  error: function (msg) {
                  alert('Failure!');
  }
});

后面的代码是这样的

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;

namespace TestNamespace
{
    public partial class MyTestPage: System.Web.UI.Page
    {
        [WebMethod]
        public static bool UpdateData(string IDs, string Values)
        {
            return true;
        }

    }
}

来自 Chrome 的请求负载,即 UI 更新变量的值是:{ IDS : "21TOK31" , VALUES : "2TOK2"}

请求没有命中函数后面的代码,ajax函数总是因为错误而进入失败块。

当没有数据被传递并且代码隐藏函数没有参数时,请求命中了代码隐藏函数。

我是在 ASP.NET 中使用 JSON 的新手。有人可以指导我解决问题吗?以及如何最好地解决它。

【问题讨论】:

  • 我发现的一个错误是在函数定义后面的代码中 public static bool UpdateData(string IDs, string Values) 参数后面的代码名称应该与JSON对象相同,在上面的情况应该是: public static bool UpdateData(string IDS, string VALUES) 它区分大小写,所以也必须注意这一点。我是新人,是个男生的错误。

标签: asp.net ajax error-handling code-behind


【解决方案1】:

解决问题:

  1. 打开Chrome debugger
  2. 点击“网络”标签
  3. 照常提交 ajax 请求
  4. 您应该会看到对 MyTestPage.aspx/UpdateData 的请求 - 点击它
  5. 在“预览”选项卡下,您会看到 .NET 返回的错误消息

如果您仍然遇到问题,请发布结果,这将为您提供正在发生的真正错误。

【讨论】:

  • 这就是我在实际请求中得到以下信息的地方:来自 Chrome 的请求负载,即 UI 更新变量的值是:{ IDS : "21TOK31" , VALUES : "2TOK2"}
  • 正确 - 我认为这就是您证明请求发送的内容的方式。我提供了另一种方法来查看来自服务器的响应,而无需修改代码。 “预览”选项卡以您作为 .NET 开发人员习惯的格式显示 .NET 服务器错误页面。有时这比警报窗口更容易查看。
【解决方案2】:

修改误差函数如下:

error: function (xhr, err) { alert("readyState: " + xhr.readyState + "\nstatus: " + xhr.status + "\nresponseText: " + xhr.responseText); }

你会看到确切的错误。

就我个人而言,我只是在给我带来问题的函数中放置断点并在本地运行它以进行调试,

【讨论】:

  • 如果我是你,我只会发送两个带有 id 的表单字段,然后是值。而不是使用json。将数据更改为数据:{ id: "id string", values: "values" }。将数据类型更改为 html。然后在您的 .net 函数中,引用作为 my.request.form("id") 和 my.request.form("values") 传递的值,而不是使用函数的参数。
【解决方案3】:

如果你使用以下,它是否有效:

var updates = '{"IDs":"21TOK31","Values":"2TOK2"}';

webconfig 文件中还有一些配置设置需要设置,但我假设您有这些设置,因为您的空返回值正常工作。

由于 asp 返回数据的格式,您可能还需要一个转换器:(在您的 javascript ajax 调用中)

converters: {
    "json jsond": function(msg)
    {
        return msg.hasOwnProperty('d') ? msg.d : msg;
    }
},

并改变:

contentType: "application/json",

【讨论】:

    猜你喜欢
    • 2011-03-21
    • 1970-01-01
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 1970-01-01
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多