为什么ajax请求无法正常工作?

问题描述:

我一直在用asp.net和ajax请求使用JQuery。我不明白为什么以下不起作用。我错过了什么吗?它似乎会触发请求(没有错误),但它永远不会进入方法。为什么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>,我不知道这有什么差别。

+0

您可以编辑您的问题发表关于服务器端更多的代码?这是一个MVC页面吗?它是一个Web窗体应用程序?如果它的MVC可以发布你建立的路线吗? – 7wp 2011-03-24 17:40:21

+0

它是webforms,而不是MVC – chobo 2011-03-24 17:44:38

+0

它对我来说看起来像一个web服务,而不是我认为的Web窗体。 – 7wp 2011-03-25 04:13:13

那么...一个data: "17"是不会工作的。你需要做一些像data: {"pollId" : "17"}

+0

仍然没有进入调试的服务器端方法 – chobo 2011-03-24 17:38:00

这似乎是你混合ASP.NET Web服务和ASP.NET MVC路线。 ASP.NET Web窗体运行时(ASPX)无法知道如何获取数据(17)并将其映射到pollId参数。

+0

我读过,它可能与asp.net,我只是不能得到它的工作 – chobo 2011-03-24 17:38:24

你需要一个success处理程序添加到您的选择哈希被传递到$.ajax,像这样:

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

谢谢,忘了所有关于:)该警报只是显示一个空框 – chobo 2011-03-24 17:36:16

我认为你需要删除[ScriptMethod],或者将其更改为[ScriptMethod(ResponseFormat=ResponseFormat.Json)],因为你不想要XML格式的响应。你想要JSON响应,不是吗?我也不知道它是如何序列化一个字符串对象的,但是你可能也想尝试返回一个你定义的对象。像new SomeResponseObject(){ MyResponseText="some text" }

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

+0

其实我终于得到它的工作,它确实需要[ScriptMethod]工作。 – chobo 2011-03-28 19:53:50

+1

很好。你能简单地分享一下你所做的工作吗?我也很好奇,我想我们都可以从中学习。 – 7wp 2011-03-31 03:59:34