删除以前称为结果的ajax?

时间:2012-09-30 11:20:42

标签: jquery ajax

我正在使用jquery,我有2个ajax调用函数。当我调用第一个ajax请求时 结果将显示在div id =“result”。然后我调用第二个ajax并且我希望它显示在div id =“result”并替换从第一个ajax返回的先前结果。从我的测试中,我仍然能够在浏览器开发人员工具下看到以前的结果。

第二个问题是,如果重复点击会导致内存泄漏吗?

$.ajax({
  url: "ajax/func1",
  type: "post"
});

$.ajax({
  url: "ajax/func2",
  type: "post"
});

4 个答案:

答案 0 :(得分:2)

Javascript本质上是单线程的,因此您的调用永远不会冲突或导致内存泄漏。但是,时机尚未确定。完成的第一个调用将首先执行。

换句话说,所有异步回调都将在同一个线程上顺序发生。

答案 1 :(得分:1)

然后我调用第二个ajax并且我希望它显示在div id =“result”并替换从第一个ajax返回的先前结果。

使用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);
});

donesuccess基本相同,但如果我理解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(结果);

}

});