尝试使用 OOP 对象从 JavaScript 获取 ajax 响应

trying to get ajax response from javascript using OOP object

本文关键字:JavaScript 获取 ajax 响应 对象 OOP      更新时间:2023-09-26

所以这是我的代码:

 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 服务器端函数总是返回一个字符串。

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

d不是

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

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

处理