我正在使用jquery,我有2个ajax调用函数。当我调用第一个ajax请求时 结果将显示在div id =“result”。然后我调用第二个ajax并且我希望它显示在div id =“result”并替换从第一个ajax返回的先前结果。从我的测试中,我仍然能够在浏览器开发人员工具下看到以前的结果。
第二个问题是,如果重复点击会导致内存泄漏吗?
$.ajax({
url: "ajax/func1",
type: "post"
});
$.ajax({
url: "ajax/func2",
type: "post"
});
答案 0 :(得分:2)
Javascript本质上是单线程的,因此您的调用永远不会冲突或导致内存泄漏。但是,时机尚未确定。完成的第一个调用将首先执行。
换句话说,所有异步回调都将在同一个线程上顺序发生。
答案 1 :(得分:1)
使用html()
方法应该每次都将内容替换为返回的结果。
例如,您可以在done
回调中将结果分配给div。
$.ajax({
url: "ajax/func1",
type: "post"
}).done(function(result) {
$("#result").html(result);
});
$.ajax({
url: "ajax/func2",
type: "post"
}).done(function(result) {
$("#result").html(result);
});
done
与success
基本相同,但如果我理解documentation中的评论可能很快就会被弃用。
弃用通知:jqXHR.success(),jqXHR.error()和 在jQuery 1.8中不推荐使用jqXHR.complete()回调函数。至 为最终删除代码做好准备,使用jqXHR.done(), jqXHR.fail()和jqXHR.always()代替。
不,它不应该导致内存泄漏。所有请求都应该在彼此之后执行。
答案 2 :(得分:1)
如果有两个ajax异步请求,则可以在第一个请求之前完成第二个请求。在这种情况下,您将在最后看到第一个结果。 您应该在成功回调第一个请求时调用第二个ajax请求。例如:
$.ajax({
url:'someurl',
type:'post'
success: function(){
// Insert smth in result div
// call second ajax request
}
答案 3 :(得分:0)
你可以在第二个结果之前使用.html('') - html函数和空字符串,它将第一个结果替换为空,然后第二个ajax调用的结果将被替换。
以下是代码:
$。AJAX({
网址:' someurl',
型:'后'
成功:function(){
$("#结果&#34)的HTML(结果);
}
});
$。AJAX({
url:" ajax / func2",
输入:"发布"
成功:function(){
$("#results")。html('');
$("#结果&#34)的HTML(结果);
}
});