2

有人可以帮我弄清楚为什么当我用 $.ajax() 调用 Web 服务时它会返回预期的数据,而当我用 $.post() 调用相同的服务时,返回的数据是“未定义的”?

请注意,在使用 google 的工具(对于 .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>

谢谢,

亚采克

4

4 回答 4

3

您需要定义响应json$.post.

例子

$.post(
    "WebService1.asmx/GetData",
    { KenID: "11" },
    function(response)
    {
        //code
    }, 'json' // <-- HERE
);
于 2013-04-01T07:38:35.810 回答
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/ 。

希望它会帮助你。

谢谢

于 2013-04-01T08:51:26.160 回答
0

请参考下面的代码片段。

$.post(""WebService1.asmx/GetData",", {id : $("#hID").val()}, function(data)
{
  doSomething( data.toString() );
});

function doSomething( data)
{
  // whatever
}
于 2013-04-01T09:02:18.053 回答
0

在启动服务器之前,您需要使用urlencoded解析 JSON 请求。

请注意在使用 urlencoder之后而不是之前启动您的 http 服务器。

例如。

app.use(express.urlencoded());

http.createServer(app).listen(3000)

没有:$ node server.js

不明确的

与:$节点server.js

{ 描述: ''}

数据已发布到服务器!

于 2019-06-18T13:54:44.980 回答