所以我有这个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');
}
});
});
我该怎么办?
编辑:这一定是时间问题。我刚注意到,当我点击并按住编辑链接一秒左右时,一切正常。当我做一个短暂的点击,它没有。所以我尝试在setTimeout()中包装ajax,但这没有帮助。还有其他想法吗?
答案 0 :(得分:0)
尝试使用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
是一个字符串中的整个网址。
答案 1 :(得分:0)
知道了!
问题在于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();
}
});
});