2014-03-29 227 views
3

我无法返回此函数的结果。从Javascript函数返回变量

function get_duration() { 
    var a = ''; 
    $.ajax({ 
     url: "http://gdata.youtube.com/feeds/api/videos?q=3KMz3JqRByY&max-results=50& format=5,1,6", 
     dataType: "jsonp", 
     success: function (data) { 
      re2 = /seconds='(\d+)'/ig; 
      while (re.exec(data) != null) { 
       a = re2.exec(data); 
      } 
     } 
    }); 
    return a; 
} 
+0

在'success'回调中使用'return' –

+2

它与你的AJAX调用是异步的有关,你的问题也被问及(并回答)了一百万次,例如[here](http:///stackoverflow.com/questions/14220321/how-to-return-the-response-from-an-ajax-call?lq=1)。 –

+0

在你的ajax中使用'async = false' –

回答

1

你必须使用returnsuccess回调以来,在阿贾克斯异步内。

像这样:

function get_duration() { 
    var a = ''; 
    $.ajax({ 
     url: "http://gdata.youtube.com/feeds/api/videos?q=3KMz3JqRByY&max-results=50& format=5,1,6", 
     dataType: "jsonp", 
     success: function (data) { 
      re2 = /seconds='(\d+)'/ig; 
      while (re.exec(data) != null) { 
       a = re2.exec(data); 
      } 
      return a; 
     } 
    }); 
} 

但是,这个功能是不能保证返回。你将不得不使用回调函数类的东西。

+0

注意'get_duration()'仍然以这种方式返回'undefined'。 –

+0

是的,谢谢我编辑 –