需要帮助编写等效于 XHR 请求的 Jquery $.ajax 请求

Need help to write a Jquery $.ajax request equivalent to an XHR request

本文关键字:请求 XHR Jquery ajax 帮助      更新时间:2023-09-26

发送文件的 XHR 请求设置了所有必需的请求标头。

var upload = function (file) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/Admin/Upload', true);
    xhr.setRequestHeader('X-Filename', file.name);
    xhr.setRequestHeader('pageid', pageid);
    xhr.setRequestHeader('catid', catid);
    xhr.send(file);
}

尝试使以下内容正常工作(使用 jQuery 1.7.2)

var xhr = new XMLHttpRequest();
var upload = function (file, xhr) {
    $.ajax
    ({
        url: '/Admin/Upload',
        beforeSend: function (xhr) {
            xhr.setRequestHeader('X-Filename', file.name);
            xhr.setRequestHeader('pageid', pageid);
            xhr.setRequestHeader('catid', catid);
        },
        data: file,
        success: function (data) {
            alert('Load was performed.');
        }
    });
}

更新:好的,所以我已经进步了一点,请求现在实际上命中了操作方法,但是,输入流中没有数据,并且所有文件键数组均为空,因此,实际的文件数据似乎没有通过。请求标头正常。(数据:文件)与xhr.send(文件)不同?

现在使用这个:

var upload = function (file) 
{
    $.ajax
    ({
        url: "/Admin/Upload",
        headers: { catid: catid, pageid: pageid },
        processData: false,
        data: file,
        success: function (data) {
            alert('Load was performed.');
        }
    });
}

尝试将contentType设置为 false,将type设置为 'POST'

$.ajax({
    url: "/Admin/Upload",
    type: 'POST',
    headers: { catid: catid, pageid: pageid },
    processData: false,
    contentType: false,
    data: file,
    success: function (data) {
        alert('Load was performed.');
    }
});