我正在转换一个用于将同步ajax请求加载到getDesign.php的函数。 getDesign.php请求一些图像,然后使用loadImages函数将它们显示在屏幕上。
在我进行更改之前:
$d.ajax({
type: "POST",
url: "getDesign.php",
data: {design : 1234,
type: ""
},
dataType: "json",
async: false,
success: function(data) {
}
});
loadImages() { // loads images }
我现在已尝试更改此设置,因为我了解不赞成使用异步部分。逻辑应该仍然相同-即调用ajax函数,然后在返回某些内容后,调用loadImages函数。我无法弄清楚为什么加载脚本时函数“ getDesign”出现为未定义状态。请有人可以看看我在做什么错吗?
var $d = jQuery.noConflict();
function loadImages()
{
// loads images
}
$d(document).ready(function() {
var getDesign = function() {
$d.ajax({
type: "POST",
url: "getDesign.php",
data: {design : 1234,
type: ""
},
dataType: "json",
success: function(data) {
}
});
};
getDesign().done(loadImages());
});
非常感谢!
答案 0 :(得分:1)
您的 getDesign 不返回承诺,最好返回未定义。添加收益就足够了:
var $d = jQuery.noConflict();
function loadImages()
{
// loads images
}
$d(document).ready(function() {
var getDesign = function() {
return $d.ajax({ // <----- RETURN HERE
type: "POST",
url: "getDesign.php",
data: {design : 1234,
type: ""
},
dataType: "json",
success: function(data) {
}
});
};
getDesign().done(loadImages);
});
此行中还有另一个错误:
getDesign().done(loadImages());
^^
将其更改为:
getDesign().done(loadImages);
.done()要求 doneCallbacks ,而不是执行函数的结果。