javascript - 如何在后端的 ajax 请求中包含字符串值和图像文件?

标签 javascript jquery

我正在尝试使用 jquery ajax 发送图像以及一些输入文本值

我尝试只发送图片,一切似乎都正常.. 但是当我包含带有文本值的输入时,这会显示出来 未捕获的类型错误:无法在“FormData”上执行“追加”:参数 2 不是“Blob”类型。

            var file_data = $('#picture').prop('files')[0];   
            var form_data = new FormData();   
            form_data.append('image', file_data);
            form_data.append(
                    'firstname'   ,   about[0],
                    'middlename'  ,   about[1],
                    'lastname'    ,   about[2],
                    'email'       ,   about[3],
                    'number'      ,   about[4],
                    'username'    ,   account[0],
                    'password'    ,   account[1],
                    'rfid'        ,   account[2],
                    'type'        ,   account[3],
                    'status'      ,   account[4],
            ); 
            $.ajax({
                type: "post",
                url: baseurl+"/admin/test",
                data: form_data,
                cache: false,
                contentType: false,
                processData: false,
                dataType: "json",
                failure : function(jqXHR, textStatus, errorThrown) {
                    alert("error" + textStatus);
                },

请告诉我如何正确地做到这一点..

最佳答案

您应该使用 Content-type: multipart/form-data 发送您的请求,并注意您只能在每个 formData.append() 中附加一个键和值

PS:使用 camelCase 变量是 JS 的最佳实践:-)

const formData = new FormData()
const fileData = $('#picture').prop('files')[0]
formData.append('image', fileData)
formData.append('firstname', about[0])
/* add the rest of your data */
const config = {
  headers: {
    'Content-Type': 'multipart/form-data',
  },
}

$.ajax({
    type: 'POST',
    url: baseurl + "/admin/test",
    config
});

关于javascript - 如何在后端的 ajax 请求中包含字符串值和图像文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57816951/

相关文章:

javascript - 将 stdout 彩色输出传递给 grunt 输出

javascript - 使用 node.js 在生产模式下缩小脚本/CSS

javascript - 如何根据元素位置调用函数?

javascript - 如何使用 JavaScript/jQuery 从 HTML 中获取符号的 unicode/hex 表示形式?

javascript - 以编程方式更改翻转开关值

javascript - 在图像组之间切换?

jquery - 为什么当我在backbone.js中渲染 View 时会渲染额外的div

javascript - Highchart 标签旋转使我的专栏消失

javascript - 用换行符和制表符替换 tr 和 td 的单个正则表达式

jquery - 根据 jQuery 中的输入值更改函数