-2

所以这是我的代码:

 function CreateDiv(D) {

   D.body = function () {

            var d =
                 $.ajax({
                     type: "GET",
                     url: "Default.aspx",
                     data: 'ExtrFlag=GetChat&userID=1&FriendID=' + this.id,
                     success: function (data) {
                         var StrResponse;
                         StrResponse = data.split('@@@');
                         return StrResponse[0];
                     },
                     error: function (xhr) {
                         return xhr.responseText;
                     }
                 });
            alert(d);

            return "<div class='chatBody' id='chatBody" + this.id + "' >" + d + "</div>";
     };

 }
 function NewChat(id,username,picture) {

        var div = new CreateDiv({ width: 250, height: 285, id: id, username: username, picture: picture });
        div.create();
    }

问题是当执行 ajax 调用时结果是d=[object object],但在我的情况下它应该是一个字符串,因为 ajax 服务器端函数总是返回一个字符串。

4

2 回答 2

0

d不是 ajax 请求的返回值,而是实际的 ajax 请求处理程序本身。从服务器返回的值是data您的情况。

由于 ajax 根据定义是异步的,因此您不能像在函数中使用它那样使用它。您应该在成功处理程序中处理所有必需的处理,或者您可以返回 ajax 请求本身的句柄并使用$.when()$.promise()在其他地方处理处理

于 2013-09-20T06:33:33.133 回答
0

您不能从异步方法返回值,所有处理 ajax 请求响应的代码都应添加到 ajax 请求的成功/失败处理程序中。

于 2013-09-20T06:35:12.880 回答