需要帮助来编写一个等同于XHR请求的Jquery $ .ajax请求

时间:2012-05-30 00:53:12

标签: javascript ajax jquery

处理发送文件的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.');
        }

    });
}

更新 好的,所以我已经取得了一些进展,现在请求实际上已经点击了action方法, 但是输入流中没有数据,并且所有文件键数组都为null, 所以实际的文件数据似乎没有经过。请求标题很好。 (数据:文件)不同我认为是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.');
        }

    });
}

1 个答案:

答案 0 :(得分:1)

尝试将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.');
    }
});