2017-06-15 113 views
-1

成功関数でjsonオブジェクトを返す関数の中にajax呼び出しがあります。返されたデータを変数に設定し、回答を検索する必要がありますが見つかりませんでした有用な答え。ajaxからの戻り値とその値を変数に設定

方法1:
私は成功コールバック内のデータを記録する場合は、IM機能を呼び出して、この

var obj = ajaxCall(); 

私のコードのような変数に返された値を設定することが

function ajaxCall(){ 
    var result; 
    $.ajax({ 
     url: url_of_my_php_file, 
     dataType: 'json', 
     type: 'GET', 
     contentType: 'application/json', 
     success: function(data) { 
     // it returns json Object "data" 
     result = data; 
    } 
    }); 
    return result; 
} 

のようなものです私のjsonはこれに似ています

[{ collection: "Super Hero", img:"http://img_url.jpg", 
heros: [{ id: "111", text: "Iron Man" }, 
{ id: "123", text: "Superman" }, 
{ id: "124", text: "Batman" }] 
}] 

しかし、戻り値は返されません。値の代わりに空文字列が返されます。戻り関数はajaxの成功関数を待機しないためです。

方法2:私は関数がメイン内の値だけが別の配列を返す。この場合、この

function ajaxCall(){ 
    var result; 
    $.ajax({ 
     url: url_of_my_php_file, 
     dataType: 'json', 
     type: 'GET', 
     contentType: 'application/json', 
     success: function(data) { 
     // it returns json Object "data" 
     callBack(data); 
    } 
    }); 

    function callBack(data){ 
     return data; 
    } 
    return callBack(); 
} 

のように、成功から関数を呼び出して、そのfuncionから値を返すと試してみました
配列(heros)のみ、外部変数ではなく、どのように修正するのですか?

iは、メソッドの上に試みたが、私はこの方法が有効である変数

function ajaxCall(){ 
var result= $.ajax({ 
    url: url_of_my_php_file, 
    dataType: 'json', 
    type: 'GET', 
    contentType: 'application/json', 
    success: function(data) { 
    // it returns json Object "data" 
    result = data; 
    } 
    },(0); 
} 

に直接AJAX結果を設定するには(私はこれを見ているかわからない)、以下のようなものを見たことがありますか?
もしそうでなければ、結果の変数にその文字列を取得してobjに返す方法はありますか?

更新:

コピーであるか、その後私のために働いていない場合、私はthis linkを試してみましたが、その方法は私のために働いていませんか?

答えて

4

使用コールバック

function ajaxCall(callback){ 
    $.ajax({ 
     url: url_of_my_php_file, 
     dataType: 'json', 
     type: 'GET', 
     contentType: 'application/json', 
     success: callback 
    }); 
} 

ajaxCall(result => { 
    //do something with result 
}) 

それとも

function ajaxCall(callback){ 
    return new Promise((resolve, reject) => { 
     $.ajax({ 
      url: url_of_my_php_file, 
      dataType: 'json', 
      type: 'GET', 
      contentType: 'application/json', 
      success: resolve, 
      error: reject 
     }); 
    }); 
} 

ajaxCall() 
    .then(result => { 
     //do something with result 
    }) 
    .catch(err => { 
     //or err 
    }); 
+3

をお試しください! FYIちょうど '成功:コールバック'という名前の関数を呼び出すために無名関数を作成する必要はありません:) – George

0

をお約束します。この問題の唯一の正しい1、おめでとうこれまでのところ、この

var obj; 
    $.ajax({ 
     url: url_of_my_php_file, 
     dataType: 'json', 
     type: 'GET', 
     contentType: 'application/json', 
     success: function(data) { 
     // it returns json Object "data" 
     obj = data; 
    } 
    }); 
+1

返す必要があるのは – karthick

+0

です。問題はobjに値を代入することです – Gopinath

+1

これに問題があります。objにレスポンスが含まれていることをどのように知っていますか? 'success'ハンドラは、AJAX呼び出しが完了すると応答を受け取るコールバックを取るべきです。 – maddockst

関連する問題