使用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代码。