未捕获的类型错误:尝试发送包含文件的数据的 JSON 对象时非法调用

Posted

技术标签:

【中文标题】未捕获的类型错误:尝试发送包含文件的数据的 JSON 对象时非法调用【英文标题】:Uncaught TypeError: Illegal invocation when trying to send a JSON object of data included files 【发布时间】:2020-09-02 16:11:21 【问题描述】:

我正在尝试向服务器发送 POST 请求。请求体是一个 JSON 对象,包含一些对象、文本、文件和数组。

但是 jQuery 返回“Uncaught TypeError: Illegal invocation”的错误。

我在谷歌上搜索了这种情况,并应用了一些解决方案,例如将对象发送到数组中 (link),但它对我不起作用。

这是我要发送的 JSON 数据:

JS代码为:

$.ajax(
  url: 'send.php',
  data: 
    'bbody': lastBody
  ,
  type: 'POST',
  success: function(res) 
    if (res == 'success') 
      alert('success');
    
  
);

lastBody 是 JSON 对象。

【问题讨论】:

没有 JSON 对象这样的东西。 JSON 是一种类似于 CSV 的文本格式。 lastBody 只是一个 javascript 对象。请使用console.log(JSON.stringify(lastBody, null, 2)) 并将输出示例粘贴到此处作为文本,而不是作为文本图像。如果该命令失败,您就会知道问题所在;这就是 jQuery 在将数据传递给 ajax 时在幕后所做的事情。 【参考方案1】:

对象data 必须是字符串。 data: JSON.stringify(key: “value”, key2:”value3”)

【讨论】:

以上是关于未捕获的类型错误:尝试发送包含文件的数据的 JSON 对象时非法调用的主要内容,如果未能解决你的问题,请参考以下文章

数据表:未捕获的类型错误:无法读取未定义的属性“长度”?

未捕获的类型错误:无法读取 AngularJS 和 D3 中未定义的属性“弧”

未捕获的类型错误:无法调用 jquery jsonrpc 客户端中未定义的方法“设置”

Sencha-Touch:未捕获的类型错误:无法读取未定义的属性“代理”

Jquery - 未捕获的类型错误:无法使用“in”运算符在中搜索“324”

数据表:未捕获的类型错误:无法读取未定义的属性“长度”