jQuery ajax请求的尴尬问题


jQuery ajax request awkward issue

所以我有这个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();
        }
    });
});