-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

dajax リクエストの戻り値ではなく、実際の ajax リクエスト ハンドラそのものです。サーバーから返される値はdataあなたの場合です。

ajaxは定義上非同期であるため、関数で使用している方法で使用することはできません。成功ハンドラーで必要なすべての処理を処理する必要があります。または、ajax 要求自体でハンドルを返し、$.when()$.promise()を使用して処理を別の場所で処理することもできます。

于 2013-09-20T06:33:33.133 に答える
0

非同期メソッドから値を返すことはできません。ajax リクエストの応答を処理するすべてのコードを、ajax リクエストの成功/失敗ハンドラーに追加する必要があります。

于 2013-09-20T06:35:12.880 に答える