【问题标题】:JQuery AJAX post to asp.net webmethod never getting called?JQuery AJAX 发布到 asp.net webmethod 永远不会被调用?
【发布时间】:2015-07-16 17:04:21
【问题描述】:

我正在尝试使用 ajax 将数据从我的 javascript 发送到 aspx webmethod。 ajax post 的 Success 选项被触发,但我的 web 方法从未被调用。 javascript代码是:

 $.ajax({
    type: "POST",
    url: '../About.aspx/GetWFData',
    data: "{sendData: '" + 5 + "'}",
    async: true,
    success: function (result) {
        alert("Bravo");
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert(textStatus);
        alert(errorThrown);
    }
});

而后面代码中的webmethod是:

 [WebMethod]
    public static string GetWFData(string sendData)
    {
        return String.Format("Hello");
    }

【问题讨论】:

  • 您的 json 无效。 ASP 是否需要它?你也忘了设置 contentType。
  • 当我设置内容类型属性时,我得到这个错误“未经授权的 401”你能举一个有效 json 的例子吗
  • {"foo":"bar"} 将是有效的。所有键必须用双引号括起来,字符串必须用双引号括起来。最好不要手动创建 JSON,而是使用内置方法。 JSON.stringify({foo: 'bar'}) 将返回 {"foo":"bar"}(作为字符串)
  • 我更改了 [data : JSON.stringify({foo: 'bar'}),] 但还是同样的问题??
  • 你添加了 contentType 吗?

标签: asp.net ajax webforms webmethod


【解决方案1】:

尝试使用下面的代码看看它是否有效。

var params = '{sendData:' + values + '}';
 $.ajax({
    type: "POST",
    url: '../About.aspx/GetWFData',
    data: JSON.stringify(params),
    async: true,
    success: function (result) {
        alert("Bravo");
    },
    error: function (jqXHR, textStatus, errorThrown) {
        alert(textStatus);
        alert(errorThrown);
    }
});

有关更多信息,请参阅http://elegantcode.com/2009/02/21/javascript-arrays-via-jquery-ajax-to-an-aspnet-webmethod/。尝试在页面上禁用请求验证。http://www.asp.net/whitepapers/request-validation

【讨论】:

  • 状态码正常。如何在ajax成功方法中获取我的webmethod的返回值来检查web方法是否被触发?
  • 从chrome开发工具看来,我调用web方法得到的响应是整个页面!!
猜你喜欢
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多