2017-05-29 20 views
0

他の関数にajaxの呼び出し値を返したいとします。コードは、(それが非同期である理由です)ajax呼び出しの後に値を返す方法は?

var obj2 = ajax_call(); 
    function ajax_call() { 
    var obj3; 
    $.post("action.php",{action: 'view_style_code_action',style_val: v},function(data,status){ 
     obj3 = $.parseJSON(data); 
    }); 
    return(obj3); 
    } 
    console.log(obj2+'test'); 

答えて

0
function ajax_call() { 
    return $.post("action.php",{action: 'view_style_code_action',style_val: v},function(data,status){    
     return data; 
    }); 

    } 

    var obj2 = ajax_call(); 
    console.log(obj2+'test'); 
+0

非同期であるため、約束からの返答を得ることはできません –

0

AJAXのリターンは将来につながる

スクリプトの下に示します。 JavaScriptは単一のスレッドで実行されるため、すぐに値を返すことはできません。

代わりに$.postがすでにサポートしているjQueryのPromise APIを理解する必要があります。

コード内の約束を活用するためにコードを少し修正してください。

function ajax_call() { 
    return $.post("action.php", {action: 'view_style_code_action',style_val: v}) 
} 

ajax_call() 
    .then(function(data) { 
    // Do the parsing here 
    var obj3 = $.parseJSON(data); 

    // Do rest of your work here. 
    ... 
    }); 
+0

他の関数でobj3値を再利用するにはどうすればよいですか?もし私が望むなら、私は同じアヤックスをもう一度呼び出さなければならない?どのように繰り返し同じAjax呼び出しを避けるには? – Rijo

+0

いいえいいえ、非同期の方法に従うようにコーディングパターンを更新してください –

+0

https://stackoverflow.com/a/14220323/5836034これはあなたに良い説明を与えるはずです –

関連する問題