我有这个 ajax 调用,它在大多数情况下都有效,但它似乎确实记住了之前的结果。编辑:这可能是由于将行为绑定(bind)到 divid。
我的例程结构是这样的:
调用 ajax 来搜索输入是否正确,从 php 获取响应。结果可以是是或否。
如果结果为"is",则更改 holder div 的颜色作为视觉提示,允许用户双击 div 以运行另一个功能。如果不是,则不允许双击 div,也不要运行其他函数。
简单吧?除了当第一个 ajax 调用产生"is"结果,然后用户执行第二个 ajax 调用并产生“否”结果时,用户可以双击“否”结果并执行针对"is"的操作' 结果。
我尝试解绑dblclick,但似乎没有用,而且仍然允许点击无结果。这是我的 jquery 代码,我的常规 javascript 代码具有相同的不良行为。
编辑:这似乎是一个绑定(bind)问题。但是我似乎可以解除绑定(bind)并销毁/删除以前绑定(bind)的行为。通过重复例程进行的进一步测试似乎表明 javascript 确实将这些绑定(bind)对象保存在内存中,因为当我多次重复错误例程时,警报会回显尽可能多的“已保存”绑定(bind)对象。
我的部分代码如下,欢迎任何见解。
TIA
编辑:解决方案是取消绑定(bind) doubleclick,我应该输入 dblclick 而不是 doubleclick
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
最佳答案
您应该将 $(divid).unbind('doubleclick');
更改为 $(divid).unbind('dblclick');
。
关于javascript - ajax - 如何清除以前的ajax结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7722441/