未捕获的类型错误:尝试发送包含文件的数据的 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:未捕获的类型错误:无法读取未定义的属性“代理”