2014-05-02 45 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检查这里的异步属性并进行实验。