jQuery ajax请求尴尬的问题

So I have this ajax request. When the user clicks an edit link, I fetch the ID of the entry and refresh the page with the data of that entry loaded into a form.

Here's my problem: This only works with the alert showing before the ajax call. When I leave out the alert, I get an ajax error (though the id is being posted) and the PHP page just reloads. Moreover, it only works when I put the newDoc stuff as a success callback. The exact same lines as a complete callback and the page reloads. Moreover, this occurs in Firefox only.

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');
        }
    });
});

What can I do?

EDIT: This must be a timing issue. I just noticed that when I click and hold the edit link for a second or so, everything works fine. When I do a short click, it doesn't. So I tried wrapping the ajax in setTimeout(), but that didn't help. Any other ideas?

Try to use location.href in place of 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 is a structured object, with properties corresponding to the parts of the URL. location.href is the whole URL in a single string.

Got it!

The problem is the way Firefox handles the mousedown event. It seems to abort the ajax call as soon as you relase the mouse button. I changed the event to click and everything is fine now.

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