我一直在用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>
,我不确定这是否有所不同。
答案 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