$ .get并获得价值

function get(){ $.get('/get.php', function(data) { alert('one: ' + data) return data; }); } var test = get(); alert('two:' + test); 

在get.php中是:

  

为什么一个警报给我一个:数字

但两个警告告诉我两个:未定义

我怎样才能在函数外得到这个值?

$.get调用是异步的。 这意味着你传递一个回调(你的function(data) { ... } ,它会被调用的结果执行。你不能从回调内部return – 当它被执行时,你的外部函数(做) $.get )已经返回。相反,尝试这样的事情:

 // callback will be executed with the response from your GET request function get(callback){ $.get('/get.php', callback); } // Call get with a callback receiving the response get(function(data) { alert('two:' + data); }); 

这是在编写javascript代码时必须习惯的模式。

您的return data是从ajax匿名函数返回的,而不是从get()函数返回的。

这是因为当调用此语句时,函数get()已 $ .get()的回调执行之前返回。 请记住,ajax请求是异步的

执行步骤是什么:

  1. 调用get()
  2. 启动带有$ .get()的Ajax请求
  3. get()返回
  4. ajax请求结束并执行$ .get()的回调

要处理这种情况,通常会将回调作为参数执行:

 function get(callback) { $.get('/get.php', function(data) { if ($.isFunction(callback)) { callback(data); } }); }