ato*_*217 7 javascript ajax jquery frontend
在下面的javascript代码中,我同时发送两个Ajax请求.
在使用Firebug进行分析之后,我得出了一个不同寻常的结论:
"哪个(Ajax)响应首先是打印最后".
问题2:如果我将Ajax url目标分配给随机字符串(比如"abcd")[不存在]那么ajax调用的总数将增加到3?
$(document).ready(function(e) {
$("form[ajax=true]").submit(function(e) {
e.preventDefault();
var form_data = $(this).serialize();
var form_url = $(this).attr("action");
var form_method = $(this).attr("method").toUpperCase();
$("#loadingimg").show();
$.ajax({
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
alert ("a");
// $("#result").html(returnhtml);
// $("#loadingimg").hide();
}
});
$.ajax({
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
// $("#duplicate").html(returnhtml);
// $("#loadingimg").hide();
alert("b");
}
});
});
});
Run Code Online (Sandbox Code Playgroud)
请参考以下小提琴.
小智 15
Gaurav,你有一个错误,在第一个$ .ajax结束时它必须以),
和第二个结束)
.
你无法结束 ;
var result1;
var result2;
$.when(
$.ajax({ // First Request
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
result1 = returnhtml;
}
}),
$.ajax({ //Seconds Request
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
result2 = returnhtml;
}
})
).then(function() {
$('#result1').html(result1);
$('#result2').html(result2);
});
Run Code Online (Sandbox Code Playgroud)
我不确定我是否完全理解,但我会尽力为您提供一些信息。就像大卫所说的那样,第一个请求似乎是最后一个响应,但这在许多情况下会有所不同。您可以通过不同的方式来控制请求的结果或顺序。
1) 第一个请求成功后,您可以发起第二个请求。我不建议这样做以提高速度,因为您的请求不是并行运行的。
$.ajax({ // First Request
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
$.ajax({ //Seconds Request
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
// $("#duplicate").html(returnhtml);
// $("#loadingimg").hide();
alert("b");
}
});
alert ("a");
// $("#result").html(returnhtml);
// $("#loadingimg").hide();
}
});
Run Code Online (Sandbox Code Playgroud)
2) 如果您需要同时响应两个请求,首选方法可能是 jQuery deferred。这将使两个请求并行运行,一旦收到两个响应,您就可以继续进行。
像这样的东西:
var result1;
var result2;
$.when(
$.ajax({ // First Request
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
result1 = returnhtml;
}
});
$.ajax({ //Seconds Request
url: form_url,
type: form_method,
data: form_data,
cache: false,
success: function(returnhtml){
result2 = returnhtml;
}
});
).then(function() {
$('#result1').html(result1);
$('#result2').html(result2);
});
Run Code Online (Sandbox Code Playgroud)
查看:
https://api.jquery.com/jQuery.when/
http://api.jquery.com/deferred.then/
https://api.jquery.com/deferred.done/
我希望这有帮助!
归档时间: |
|
查看次数: |
34229 次 |
最近记录: |