使用ajax calls
我们可以在使用done()-function
$.ajax({
.....
})
.done ( function(data) {
..... (manipulate data using $.ajax result
})
现在我有一个if-else
子句,其中包含ajax-embedded
。
if (some condition)
{ //Standard HTML-element/tag manipulation
$("#obj1").append('<a class="trigger">Click Me </trigger>');
$(".SomeClass").remove();
......
}
else
{
//HTML-element/tag manipulation after $.ajax-call
$.ajax({
//perform ajax-call
})
.done(function (data) {
$("#obj1").append('<a class="trigger">' data.someProp '</trigger>');
})
}
//Perform actions: Part2
$(".trigger").Click(function() { Somefunction() });
我想知道Jquery是否提供了一种方法来执行functions in Part2
暂停,直到if-else
内的所有操作都完成(包括$.ajax
)?我似乎无法使用谷歌找到任何相关信息(很可能我只是使用了错误的关键字)。
我希望我的问题对每个人都是可以理解的。如果您需要进一步的信息,请不要犹豫。
答案 0 :(得分:1)
在这种情况下,您可以使用jQuery promise。 http://api.jquery.com/deferred.done/
var dfd = null;
if (some condition)
{ //Standard HTML-element/tag manipulation
$("#obj1").append('<a class="trigger">Click Me </trigger>');
$(".SomeClass").remove();
......
//Create Deferred object and resolve immediately
dfd = $.Deferred();
dfd.resolve();
}
else
{
//HTML-element/tag manipulation after $.ajax-call
//$.ajax returns Deferred
dfd = $.ajax({
//perform ajax-call
})
.done(function (data) {
$("#obj1").append('<a class="trigger">' data.someProp '</trigger>');
})
}
//Use when for waiting the Deferred to get resolved
$.when(dfd).then(function(){
//Perform actions: Part2
$(".trigger").Click(function() { Somefunction() });
})
答案 1 :(得分:1)
我做这样的事情:
if (some condition)
{ //Standard HTML-element/tag manipulation
$("#obj1").append('<a class="trigger">Click Me </trigger>');
$(".SomeClass").remove();
......
Part2();
}
else
{
//HTML-element/tag manipulation after $.ajax-call
$.ajax({
//perform ajax-call
})
.done(function (data) {
$("#obj1").append('<a class="trigger">' data.someProp '</trigger>');
Part2();
})
}
function Part2()
{
$(".trigger").Click(function() { Somefunction() });
}
答案 2 :(得分:1)
您应该使用'同步AJAX请求'
//HTML-element/tag manipulation after $.ajax-call
$.ajax({
//perform ajax-call
**async: false**
})
.done(function (data) {
$("#obj1").append('<a class="trigger">' data.someProp '</trigger>');
})