function get(){
$.get('/get.php', function(data) {
alert('one: ' + data)
return data;
});
}
var test = get();
alert('two:' + test);
在get.php中是:
<?php echo "number"; ?>
为什么一个警报告诉我 one:数字
但两个警报告诉我 二:未定义
如何在函数外获取此值?
答案 0 :(得分:7)
$.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代码时必须习惯的模式。
答案 1 :(得分:1)
您的return data
正在从ajax匿名函数返回,而不是从get()函数返回。
答案 2 :(得分:1)
这是因为当调用此语句时,函数get()已经返回之前已执行$ .get()的回调。请注意,ajax请求是异步。
执行步骤是什么:
要处理这种情况,通常会将回调传递给参数执行:
function get(callback) {
$.get('/get.php', function(data) {
if ($.isFunction(callback)) {
callback(data);
}
});
}