使用jquery ajax asp.net 4.0调用asmx服务

我正在尝试使用jquery调用asmx服务示例,这里是jquery代码

$.ajax({ type: "POST", url: "/Services/Tasks.asmx/HelloWorld", data: "{}", dataType: "json", contentType: "application/xml; charset=utf-8", success: function (data) { alert(data); } }); 

这没有显示任何消息,代码在asp.net 4.0中,我错过了什么?

编辑 – 我将dataType更改为xml,现在成功函数正在返回xml后返回

  Hello World 

我正在使用以下代码来解析xml数据,它在alert中显示为null

 success: function (data) { edata = $(data).find("string").html(); alert(data); } 

我相信这是因为你有dataType:“json”,并且它期望响应内容类型相同但返回XML。 我打赌完整的事件正在被提升,但没有成功。

尝试

 $.ajax({ type: "POST", url: "/Services/Tasks.asmx/HelloWorld", data: "{}", dataType: "json", contentType: "application/xml; charset=utf-8", success: function (data) { alert(data); }, complete: function (data) { alert(data); } }); 

UPDATE

我认为这是因为你正在使用.html(),你需要使用text()。 此外,我不知道你是否打算这样做,但你的警报中有data ,我假设你打算使用edata 。 以下对我有用:

 jQuery.ajax({ type: "POST", url: "/yourURL", dataType: "xml", data: "{}", contentType: "application/xml; charset=utf-8", success: function(data) { edata = $(data).find("string").text(); alert(edata); } }) 

我建议将[ScriptService]属性添加到Tasks.asmx类中,以便它接受并以JSON而不是XML进行响应。 您的客户端代码看起来不错,但您需要在成功处理程序中查看“data.d”而不是“data”。

  use it.  

好吧,你说的是dataType是JSON,但是contentType是XML。 尝试

 contentType: "application/json; charset=utf-8", 

如果没有,那么我们必须看到asmx代码。