【问题标题】:Why is ajax request not working?为什么ajax请求不起作用?
【发布时间】:2011-03-24 17:27:39
【问题描述】:

我一直在使用 JQuery 处理 asp.net 和 ajax 请求。我无法弄清楚为什么以下内容不起作用。我错过了什么吗?它似乎可以触发请求(没有错误),但它永远不会进入方法内部。

 // asp.net webforms (NOT MVC)
public partial class PollManager : System.Web.UI.Page
{

        [WebMethod]
        [ScriptMethod]
        public static string DeletePoll(string pollId)
        {
            string test = "testing";

            return test;
        }
}


  **Updated Code**

  $.ajax({
        url: "PollManager.aspx/DeletePoll",
        data: { "pollId": "17" },
        dataType: "text",
        success: function (data)
        {
            alert(data);
        }                
    });

在母版页中有一个<asp:toolkitscriptmanager>,我不确定这是否有什么不同。

【问题讨论】:

  • 您能否编辑您的问题以发布更多关于服务器端的代码?这是一个 MVC 页面吗?它是 Web 表单应用程序吗?如果它的 MVC 可以发布你设置的路由吗?
  • 对我来说它看起来像是一个 Web 服务,而不是我认为的 Web 表单。
  • 注意该类是如何从 Page Class 继承的...

标签: jquery asp.net webforms


【解决方案1】:

嗯...对于一个data: "17" 是行不通的。你需要做类似data: {"pollId" : "17"}

【讨论】:

  • 在调试时仍然没有进入服务器端方法
【解决方案2】:

您似乎在混淆 ASP.NET Web 服务和 ASP.NET MVC 路由。 ASP.NET Web 表单运行时 (ASPX) 无法知道如何获取您的数据 (17) 并将其映射到 pollId 参数。

【讨论】:

  • 我已经读到使用 asp.net 是可能的,但我无法让它工作
【解决方案3】:

您需要将success 处理程序添加到传递到$.ajax 的选项哈希中,如下所示:

    $.ajax({
        url: "PollManager.aspx/DeletePoll",
        data: "17",
        dataType: "text",
        success: function(data) {
            alert(data);
        }             
    });

【讨论】:

  • 谢谢,完全忘记了 :) 警报只是显示一个空框
【解决方案4】:

我认为您需要删除 [ScriptMethod],或者将其更改为 [ScriptMethod(ResponseFormat=ResponseFormat.Json)],因为您不想要 XML 格式的响应。你想要 JSON 响应,不是吗?

我也不知道它是如何序列化字符串对象的,但您可能还想尝试返回您定义的对象。赞new SomeResponseObject(){ MyResponseText="some text" }

然后,如果您返回该对象,在 javaScript 中您应该能够像这样访问它data.MyResponseText

【讨论】:

  • 其实我终于搞定了,它确实需要 [ScriptMethod] 才能工作。
  • 哦,太好了。你能简要分享一下你做了什么来让它发挥作用吗?我也很好奇,我想我们都可以从中学习。
猜你喜欢
  • 1970-01-01
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 2018-04-28
  • 1970-01-01
  • 1970-01-01
  • 2013-12-20
  • 2018-09-20
相关资源
最近更新 更多