我有一个基本的jQuery
功能:
$(document).on('click', '#myElement', function(){
alert( getItemDescription('2') );
});
我的函数被调用,并按预期运行以下内容:
function getItemDescription(id){
$.post("item_description.php", {id:id},
function () {
// ...
})
.done(function (data) {
return data;
})
.fail(function () {
return 'error';
});
}
当我在控制台窗口中查看网络标签时,.post()
已成功从item_description.php
检索正确的信息 - 但我的原始功能 - alert
只是回复{ {1}} - 我查看了undefined
中的返回手册,并阅读了有关SO的大量帖子 - JS
应该能够返回一个字面量,不是吗?用这个简单的脚本我没看到什么?如何将检索到的变量return
从data
转换为getItemDescription
?
答案 0 :(得分:0)
你的第二个功能目前不会返回任何内容,你需要的是
function getItemDescription(id){
return $.post("item_description.php", {id:id},
function () {
// ...
})
.done(function (data) {
return data;
})
.fail(function () {
return 'error';
});
}
答案 1 :(得分:0)
你应该做的是在 .done 里面打电话。一个例子是:
function getItemDescription(id,f){
$.post("item_description.php", {id:id},
function (data) {
// ...
})
.done(function (data) {
f(data);
})
.fail(function () {
return 'error';
});
}
$(document).on('click', '#myElement', function(){
getItemDescription('2',alert);
});
在这种情况下你也不应该使用.done,因为数据已经在之前的链式调用中被检索到了。如果你想抓住所有,请使用 .finally