有人可以帮我弄清楚为什么当我用$ .ajax()调用它来调用web服务它会返回预期的数据时,当我用$ .post()调用调用相同的服务时,返回的数据是“未定义的”?
请注意,在使用google工具检查Response(用于.post()调用)时,我可以看到从服务器发回的数据,但不知道它对.post()调用的.done()函数不可用。
程序完成且没有错误。
以下是整个代码:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test01</title>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
$(document).ready(function () {
$("#btn01").click(function () {
//.ajax type call
$.ajax({
type: "POST",
url: "WebService1.asmx/GetData",
data: "{KenID:'11'}",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data)
{
$("#div01").html(data.d);
}
});
});
$("#btn02").click(function () {
// .post() type call
$.post("WebService1.asmx/GetData", { KenID: "11" })
.done(function (data, status)
{
$("#div01").html("Data: " + data.d + "</br>Status: " + status);
})
.fail(function () { alert("error"); })
.always(function () { alert("completed"); });
});
});
</script>
</head>
<body>
<div id="div01">Here comes the result</div>
<button id="btn01">Load Data with $.ajax : </button>
<button id="btn02">Load Data with $.post : </button>
<input id="KenID" value="11" />
</body>
</html>
谢谢,
亚切克
答案 0 :(得分:3)
您需要在json
中定义响应$.post
。
示例强>
$.post(
"WebService1.asmx/GetData",
{ KenID: "11" },
function(response)
{
//code
}, 'json' // <-- HERE
);
答案 1 :(得分:0)
它基本上是$ .post是返回xml基础数据类型。如果您在控制台日志和响应选项卡中看到firebug,您将找到响应类型。这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">test</string>
因此,我建议您将XML响应转换为字符串数据类型。为此,请参阅: http://api.jquery.com/jQuery.parseXML/
希望它会对你有所帮助。
由于
答案 2 :(得分:0)
请参阅以下代码段。
$.post(""WebService1.asmx/GetData",", {id : $("#hID").val()}, function(data)
{
doSomething( data.toString() );
});
function doSomething( data)
{
// whatever
}
答案 3 :(得分:0)
启动服务器之前,您需要使用 urlencoded 解析JSON请求。
请注意,不要再使用urlencoder启动之后的http服务器。
例如。
app.use(express.urlencoded());
http.createServer(app).listen(3000)
无: $ node server.js
未定义
与: $ node server.js
{说明:''}
数据已发布到服务器!