我正在尝试使用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
返回<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">Hello World</string>
我正在使用以下代码来解析xml数据,它在alert
中显示为nullsuccess: function (data) {
edata = $(data).find("string").html();
alert(data);
}
答案 0 :(得分:6)
我相信这是因为你有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);
}
});
我认为这是因为你使用的是.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);
}
})
答案 1 :(得分:2)
我建议将[ScriptService]属性添加到Tasks.asmx类中,以便它接受并以JSON而不是XML进行响应。您的客户端代码看起来不错,但您需要在成功处理程序中查看“data.d”而不是“data”。
答案 2 :(得分:2)
use it.
<script>
alert("aaa");
$.ajax({
type: "POST",
url: "MyService.asmx/HelloWorld",
data: "{}",
dataType: "xml",
contentType: "application/xml; charset=utf-8",
success: function (data) {
alert(data);//data-object xmldocument
edata = $(data).children("string").text();
alert(edata);
}
});
alert("bbb");
</script>
答案 3 :(得分:1)
好吧,你说的是dataType是JSON,但是contentType是XML。尝试
contentType: "application/json; charset=utf-8",
如果没有,那么我们必须看到asmx代码。