【问题标题】:Ajax call to asp.net web method doesn't trigger对 asp.net web 方法的 Ajax 调用不会触发
【发布时间】:2016-03-19 02:53:56
【问题描述】:

我是 ajax 和 javascript 的新手。

我的 web 项目根目录中名为 people.aspx 的页面中有以下 web 方法:

[System.Web.Services.WebMethod]
public static string RenderDetails()
{
    return "Is it working?";
}

我正在尝试通过 people.aspx 页面中的 Ajax 调用访问 Web 方法。我对 div 的单击事件进行了以下 ajax 调用:

$("div.readonly").click(function (e) {
    e.stopPropagation();
    $.ajax({
      type: "POST",
      async:false,
        url: "people.aspx/RenderDetails",                   
        dataType: "json",
        beforeSend: function () {
            alert("attempting contact");
        },
        success: function (data) {
            alert("I think it worked.");
        },
        failure: function (msg) { alert("Sorry!!! "); }
    });

    alert("Implement data-loading logic");
});

我在 javascript 控制台中没有收到任何错误,但是,ajax 调用也没有命中 web 方法。任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • 你的浏览器调试控制台说什么?
  • 从内存标准 'webmethod' 是一个 GET 事务,您的 AJAX 请求是 POST。尝试将 AJAX 更改为 GET,或将您的网络方法更改为 POST。
  • 您是否使用ScriptService 属性装饰您的服务并使用ScriptMethod 装饰您的方法? stackoverflow.com/questions/211348/…
  • 在此处发布您的 aspx 页面内容。
  • 感谢大家提供的所有信息,将 POST 更改为 GET 对我有用。为迟到的回复道歉。

标签: javascript c# asp.net ajax


【解决方案1】:

尝试将类型更改为GET 而不是POST(这可能是您的网页没有被点击的原因)。还有你的failureparameter is incorrect,应该是error。展开它以包含所有参数(它将提供更多信息)。简而言之,将整个 AJAX 查询更改为:

$.ajax({
    type: "GET",
    async:false,
    url: "people.aspx/RenderDetails",                   
    dataType: "json",
    beforeSend: function () {
        alert("attempting contact");
    },
    success: function (data) {
        alert("I think it worked.");
    },
    error: function (jqXhr, textStatus, errorThrown)
        alert("Sorry!!! ");  // Insert breakpoint here
    }
});

在您的浏览器中,调试错误功能。参数(尤其是 jqXHR)包含很多关于失败的信息。如果您还有更多问题,请给我们来自 jqXHR 的信息(错误字符串、错误代码等)。

【讨论】:

  • 非常感谢您提供的信息。从 POST 更改为 GET 成功了。为迟到的回复道歉,被其他项目跟踪了。
猜你喜欢
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-30
  • 1970-01-01
  • 1970-01-01
  • 2017-06-10
  • 1970-01-01
相关资源
最近更新 更多