我有功能:
function test(){
$.post('data.php', function(val){
return val;
})
return 'error';
}
我简单地使用它:
console.log(test());
帖子正在做 - 返回好的值,但是函数测试返回'错误'而不是data.php中的值。 可以从$ .post获得价值吗?如果是,怎么样?
答案 0 :(得分:4)
return
语句不会将函数冒泡到全局范围,如果仔细观察,可以看到return val
存在于自己的函数中。
除此之外,该功能不会同步执行,因此在执行之前永远不会有机会返回。
因此,您需要传入回调或使用promises模式。谷歌搜索这些单词将为您找到关于它们的丰富信息。
答案 1 :(得分:0)
使用promises来处理错误。你的代码返回'错误'将在post方法回调之前被调用。
function test(){
$.post('data.php', function(val){
alert (val);
}).fail(function(){ alert('error');});
}
答案 2 :(得分:0)
试试这个
function test(callback){
$.post('data.php', function(val){
if(typeof callback == 'function') callback(val);
})
}
用
打电话test(function(val){ console.log(val) });
答案 3 :(得分:0)
该函数在帖子结束前返回'error',因为post是异步的。尝试使用回调。像这样:
function test(callback) {
$.post('data.php', function(val){
callback(val);
})
.fail(function() {
callback('error');
});
}
function log(message) {
console.log(message);
}
test(log);