为什么ajax请求不起作用?

时间:2011-03-24 17:27:40

标签: jquery asp.net webforms

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

 // 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>,我不确定这是否有所不同。

4 个答案:

答案 0 :(得分:0)

嗯......对于一个data: "17"是行不通的。您需要执行data: {"pollId" : "17"}

之类的操作

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

一样

然后,如果你返回那个对象,在javaScript中你应该可以像data.MyResponseText

那样访问它