jQuery ajax请求尴尬的问题

时间:2013-08-28 12:19:00

标签: php javascript ajax jquery

所以我有这个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,但这没有帮助。还有其他想法吗?

2 个答案:

答案 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();
        }
    });
});