0

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

4

2 回答 2

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是单个字符串中的整个 URL。

于 2013-08-28T12:23:36.463 回答
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();
        }
    });
});
于 2013-08-28T16:46:11.193 回答