10

フレームワークが大きくなるにつれて、メインのデザイン ファイルに残すのではなく、ファイルに分割することにしました。ただし、そうすると、関数の戻り値は何も返されません。

データが空ではありません - js ファイルの値を警告すると、そこにあります!

機能:

1 つ目の .js ファイル内の関数 (実行前にインクルードされます)

             var lock_get = 0;
             function get_data(data, destination) 
             {

                if (lock_get == 0)
                {
                    lock_get = 1;
                    $.ajax({
                        type: "POST",
                        url: destination,
                        async: true,
                        data: data,
                        success: function(data) 
                        {
                            lock_get = 0;
                            if (data)
                            {
                                return data;
                            }
                        }
                    });
                }
             };

実行部分は次のとおりです。

    var test = get_data(data, destination);
    notice(test);

そしてテストは空です...私はすでにさまざまな書き方を試しましたが、jsの可能性を誤解していると思いますか?

4

2 に答える 2

10

それはできません。呼び出しが非同期であるため、get_data 関数は ajax 呼び出しの結果を返すことができません。

get_data 関数にコールバックを提供し、コールバックで結果を処理する必要があります。

function get_data(data, destination, callback) 
         {

            if (lock_get == 0)
            {
                lock_get = 1;
                $.ajax({
                    type: "POST",
                    url: destination,
                    async: true,
                    data: data,
                    success: function(data) 
                    {
                        lock_get = 0;
                        if (data && callback)
                        {
                            callback(data);
                        }
                    }
                });
            }
         };

そして、そのように呼び出します:

get_data(data, destination, function(test){
   notice(test);
});
于 2012-09-18T10:36:16.637 に答える
0

または、同期 AJAX 呼び出しから戻ることもできます。通常、同期呼び出しを使用するのは悪い考えですが、場合によっては役立つ場合があります。

http://pratyush-chandra.blogspot.com/2012/04/store-ajax-json-response-into.html

于 2015-04-02T15:14:15.173 に答える