2014-03-12 155 views
0

我有下面的代码,这里我需要从getTime获取时间变量?从jquery函数获取返回值

function getTime(handleData) { 
      return $.ajax({ 
      url: 'data', 
     success:function(data) { 
      handleData(data); 
       } 
      }); 
      } 


    getTime(function(output){ 

    if(output == null || output == undefined) 
    console.log("data is null"); 
    arr1 = output.split('\n'); 

     var time= arr1[0]; 
     return time 
     }); 

如果我试图让时间值低于其给予未定义

var time =getTime(function(output){ 

if(output == null || output == undefined) 
console.log("data is null"); 
arr1 = output.split('\n'); 

    var time= arr1[0]; 
    return time 
    }); 
+0

您不能从异步调用返回。 – epascarello

+0

但如果我确实警告(时间),它的显示,有没有什么办法可以返回值? – sree

+0

如果你在''.ajax()''''''''''''''''的值'回调中放置了一个调试断点?服务器返回的响应是什么?另外,正如@epascarello指出的那样,'return'语句不会做你认为它的工作。 'getTime'没有返回值,其中的回调函数没有地方返回值。您需要积极响应回调中的值,而不是将其返回。 – David

回答

1

您正在返回$就调用,而不是主要的getTime函数的回调函数,因此,您总能获得未定义。要正确地从函数中返回并在之后使用该值,您应该使用回调函数来完成您的工作,或者使用async:false来进行同步调用。

var timeVal; 
function getTime() { 
    $.ajax({ 
     url: 'data', 
     async: false, 
     success:function(data) { 
      timeVal = data; 
     } 
    }); 
} 


getTime(); 
output = timeVal; 
if(output == null || output == undefined) 
    console.log("data is null"); 
arr1 = output.split('\n'); 
var time= arr1[0]; 
+0

这是行不通的,我认为你的代码中有一些语法错误?你觉得呢 – sree

+0

?或者你在控制台日志中谈论证据? –

+0

你应该在那里添加你的url而不是'data'。 –