所以我有这个ajax请求。当用户点击编辑链接时,我获取条目的ID,并用加载到表单中的条目数据刷新页面
我的问题是:这只适用于ajax调用之前显示的警报。当我忽略警报时,我会得到一个ajax错误(尽管id正在发布),PHP页面就会重新加载。此外,只有当我把newDoc的东西作为成功回调时,它才起作用。完全相同的行作为一个完整的回调和页面重新加载。此外,这种情况仅发生在Firefox中。
jQuery('a.edit').on('mousedown', function (e) {
e.preventDefault();
var id = jQuery(this).attr('data-title');
alert('test');
jQuery.ajax({
url: document.location,
data: {
id: id
},
success: function (data) {
var newDoc = document.open("text/html", "replace");
newDoc.write(data);
newDoc.close();
},
error: function () {
alert('error');
}
});
});
我能做什么?
编辑:这一定是时间问题我刚刚注意到,当我点击并按住编辑链接一秒钟左右时,一切都很好。当我点击时,它不会。所以我尝试将ajax封装在setTimeout()中,但这没有帮助。还有其他想法吗?
尝试使用location.href
代替document.location
,
jQuery.ajax({
url: location.href,
data: {
id: id
},
success: function (data) {
var newDoc = document.open("text/html", "replace");
newDoc.write(data);
newDoc.close();
},
error: function () {
alert('error');
}
});
location
是一个结构化对象,其属性对应于URL的各个部分。location.href
是单个字符串中的整个URL。
明白了!
问题是Firefox处理mousedown事件的方式。似乎只要重新按下鼠标按钮,就会中止ajax调用。我将事件更改为单击,现在一切都很好。
jQuery('a.edit').on('click', function () {
var id = jQuery(this).attr('data-title');
jQuery.ajax({
url: document.location,
data: {
id: id
},
success: function (data) {
var newDoc = document.open("text/html", "replace");
newDoc.write(data);
newDoc.close();
}
});
});