我有一个简单的HelloWorld webservice,返回Hello + Name,它与Jquery 1.3.2完全一致但是返回undefined 1.7.1 我是Jquery的新手,已经研究了很多,但无法修复。 任何帮助将不胜感激。
<head runat="server">
<title>Untitled Page</title>
<script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
</head>
<body>
<form id="form1" runat="server">
<script language="javascript" type="text/javascript">
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "http://localhost:60105/WCFService3/Service.svc/HelloWorld",
data: '{"name":"John"}',
dataType: "json",
success: function(response) {
alert(response.HelloWorldResult);
},
error: function(message) {
alert("error has occured");
}
});
</script>
</body>
答案 0 :(得分:0)
我只是在学习ajax / webservice的东西,这就是我把它放在一起的东西:
//Create an empty DTO (Data Transfer Object)
var DTO = {};
$(function () {
// set Ajax default settings
$.ajaxSetup({
type: "POST",
contentType: "application/json; charset=utf-8",
data: "{}",
dataType: "text", //do NOT set to json!!!
converters: {
"text json": function (jsonString) {
var res = JSON.parseWithDate(jsonString);
if (res && res.hasOwnProperty("d"))
res = res.d;
return res;
}
},
dataFilter: function (data) {
var msg;
if (typeof (JSON) !== 'undefined' && typeof (JSON.parse) === 'function')
msg = JSON.parse(data);
else
msg = eval('(' + data + ')');
if (msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
}
});
//Set the parameter of the DTO
DTO.name = "John";
$.ajax({
url: location.protocol + "//" + location.host + "/WCFService3/Service.svc/HelloWorld",
data: JSON.stringify(DTO),
success: function (data) {
alert(data.HelloWorldResult);
},
error: function (xhr, err, desc) {
alert(jQuery.parseJSON(xhr.responseText).Message);
}
});
});
对于JSON.stringify部分,如果您的浏览器不支持它,则需要包含以下内容的json2_min.js文件:
对于我目前正在处理的网站,我只需将参数添加到需要的DTO对象中,然后将其转换为JSON并传递给服务。
对于Ajax设置,它处理.NET 3.5中引入的“d”字段
希望这有帮助。
答案 1 :(得分:0)
是您的服务器返回?在最新版本中,jQuery依赖于本机浏览器json解析,因此响应必须是有效的json,而不是像'{status:“off”}'那样。
此外,“data”参数可以是一个对象,而不仅仅是一个字符串