【问题标题】:ajax - how to clear previous ajax resultajax - 如何清除以前的 ajax 结果
【发布时间】:2011-10-11 16:20:52
【问题描述】:

我有这个 ajax 调用,它在大多数情况下都有效,但它似乎确实记住了之前的结果。编辑:这可能是由于将行为绑定到了一个div。

我的例程结构是这样的:

  1. 调用ajax搜索输入是否正确,从php中获取响应。结果可以是“是”或“否”。

  2. 如果结果为“是”,则更改持有人 div 的颜色作为视觉提示,允许用户双击该 div 以运行另一个功能。如果没有,请不要允许双击 div 并且不要运行其他函数。

简单吧?除了当第一个 ajax 调用产生“是”结果,然后用户执行第二个 ajax 调用并产生“否”结果时,用户可以 dblclick 上“否”结果并执行用于“是”的操作' 结果。

我尝试取消绑定 dblclick,但它似乎不起作用,并且仍然允许单击 no 结果。这是我的 jquery 代码,我的常规 javascript 代码也有同样的不良行为。

编辑:这似乎是一个绑定问题。但我似乎可以解除绑定并销毁/删除以前绑定的行为。通过重复例程进行的进一步测试似乎表明 javascript 确实将这些绑定对象保存在内存中,因为当我多次重复错误例程时,警报会回显尽可能多的“已保存”绑定对象。

我的部分代码如下,感谢任何见解。

TIA

编辑:解决方案是取消绑定双击,我应该输入 dblclick 而不是双击

function search(input,divid) {

var queryString = "name=" + input+"&divid="+divid;
var url = "../l.php";

      $.ajax({
      type: 'get',
      url: url,
      data: queryString,
      cache: false,
      dataType: 'text',
      timeout: 10000, 

      error: function(xhr, status, error) { alert('Search Error: '+ xhr.status+ ' - '+ error); },

      success: function(response) { 

      var result = response;
      var err = /:/;
      var divid = "#"+divid;


      if (result == "Yes" ) 
      { 
        $(tldid).attr({'class':'tg1', 'title':'Doubleclick to save'});

        var testword = 'xyz';
        $(divid).dblclick(function() {
            alert (testword);

                    $(divid).unbind('doubleclick');
                   });

       else {
         //alert (testword +" should not have been passed here, but it does");
                 $(divid).attr({'class':'tg2'});
        }


      }//success
    });

}//end 

【问题讨论】:

  • 是的,当您的 URL 相同时,浏览器会在后续调用中从缓存中获取结果。请参阅stackoverflow.com/questions/948828/… 通过将时间戳或其他查询参数添加到 URL 来处理它
  • @sudmong:他已经设置了cache: false。将缓存设置为 false 会将查询字符串参数“_=[TIMESTAMP]”附加到 URL
  • @sudmong,我想你错过了理解我的问题,这不是浏览器缓存问题,我知道这个问题,我将缓存设置为 false。当我输入问题时,似乎是绑定问题。
  • 我按照您的第一条语句进行了说明,“但它似乎确实记住/缓存了以前的结果。” ???
  • @sudmong,对不起语言混乱,我不知道错误是什么,所以我无法准确命名。

标签: javascript jquery ajax


【解决方案1】:

您应该将$(divid).unbind('doubleclick'); 更改为$(divid).unbind('dblclick');

【讨论】:

  • 谢谢本,我完全忽略了这一点。我从本指南jquery-tutorial.net/events/the-unbind-method 中得到了“双击”,这可能是一个错字。我很高兴遇到了这个问题,它可以部分解释为什么我的脚本会导致浏览器运行缓慢。
猜你喜欢
  • 2021-02-15
  • 1970-01-01
  • 2018-04-06
  • 2021-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-24
  • 2023-03-03
相关资源
最近更新 更多