2014-05-02 38 views
-1

我不能在ajax調用後獲得返回的值。我可以看到值正在返回,但是當我執行console.log()時,它顯示未定義。我的方法有什麼問題嗎?Ajax調用jquery後爲什麼返回不工作?

var base_path = "http://localhost/lab/theapp/api/"; 

$(function() { 
    var url = base_path + "tasks"; 
    var type = "post"; 
    var data = ""; 
    var get = submit_me(type,data,url); 
    console.log(get); 
}); 


function submit_me(type,data,url) { 
    try { 
     $.ajax({ 
      url: url, 
      type: type, 
      data: data, 
      dataType: 'json', 
      beforeSend: function (request) { 
       request.setRequestHeader("X-CSRF-Token", $.cookie('token')); 
      }, 
      error: function(XMLHttpRequest, textStatus, errorThrown) { 
       //alert('page_login_submit - failed to login'); 
       console.log(JSON.stringify(XMLHttpRequest)); 
       console.log(JSON.stringify(textStatus)); 
       console.log(JSON.stringify(errorThrown)); 
      }, 
      success: function (r) { 
       if (r.sessid){ 
        var sessid = r.sessid; 
        var session_name = r.session_name; 
        var token = r.token; 
        jQuery.cookie("token", token); 
        return r; 
       } 
      } 
     }); 
    } 
    catch (error) { console.log(error) } 
} 
+1

在這裏返回'undefined'的'console.log'在哪裏? – christian314159

+1

請設置Async ='false'並檢查它。 –

+1

@JayeshGoyani這不是一個很好的答案。使用'async = false'是不好的編程練習 – jasonscript

回答

-1

你的Ajax調用需要一定的時間來檢索值。您不能將值直接傳遞給變量。在ajax成功函數中編寫代碼。即在ajax請求函數中的console.log()。這將遵循由ajax調用造成的延遲。試試這個鏈接https://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings檢查這裏的異步屬性並進行實驗。