$ .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请求是异步的 。
执行步骤是什么:
- 调用get()
- 启动带有$ .get()的Ajax请求
- get()返回
- ajax请求结束并执行$ .get()的回调
要处理这种情况,通常会将回调作为参数执行:
function get(callback) { $.get('/get.php', function(data) { if ($.isFunction(callback)) { callback(data); } }); }