XMLHttpRequest到jQuery Ajax

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XMLHttpRequest到jQuery Ajax相关的知识,希望对你有一定的参考价值。

我有这个代码,我希望它使用jQuery Ajax。

var input = document.getElementsByTagName("input")[0], file, target, i, len;
input.addEventListener("change", function(e) {
    target = e.target.files;

    for (i = 0, len = target.length; i < len; i += 1) {
        file = target[i];
    }
    var fd = new FormData();
    fd.append('image', file);
    console.log(fd);


    var xhttp = new XMLHttpRequest();
    xhttp.open('POST', "https://api.imgur.com/3/image", true);
    xhttp.setRequestHeader('Authorization', 'Client-ID xxxxxxxxxxxxxxx');
    xhttp.onreadystatechange = function () {
        if (this.readyState === 4) {
            if (this.status >= 200 && this.status < 300) {
                var response = '';
                try {
                    response = JSON.parse(this.responseText);
                } catch (err) {
                    response = this.responseText;
                }
                console.log(response);
            } else {
                throw new Error(this.status + " - " + this.statusText);
            }
        }
    };
    xhttp.send(fd);
    xhttp = null;
});

我已经尝试过制作自己,但它没有用。

代码我尝试过:

$.ajax({
      url: "https://api.imgur.com/3/image",
      method: "POST",
      headers: {
            'Authorization':'Client-ID xxxxxxxxxxxxxxx'
      },
      data: fd,
      success: function(response) {
            console.log(response);
      }
});

但是日志错误:

未捕获的TypeError:非法调用

如果我删除data: fd,它会有效,但需要数据。

答案
$.ajax({
    url: 'https://api.imgur.com/3/image',
    method: 'POST',
    data: fd,
    processData: false,
    headers: { 'Authorization': 'Client-ID xxxxxxxxxxxxxxx' },
    success: function(data){
        //do your parsing here
    }
});

以上是关于XMLHttpRequest到jQuery Ajax的主要内容,如果未能解决你的问题,请参考以下文章

XmlHttpRequest2 进度事件和 ExtJS 3.3 Ext.Ajax

XMLHttpRequest到jQuery Ajax

JQuery需要手动回收xmlHttpRequest对象

thinkphp 验证是否ajax提交

在Web Api中实现Http方法(Get,Put,Post,Delete)

jQuery 已弃用同步 XMLHTTPRequest