jQuery ajax Uncatch TypeError: 非法调用
jQuery ajax Uncaught TypeError: Illegal invocation
我读过的所有关于这个问题的文章都是因为被传递的对象包含其他对象,而不是原始值。
我的数据对象都是原始值,但它仍然不起作用。
代码如下:
function ImageUploader(imgEl, params) {
this.imgEl = imgEl;
this.params = params;
this.params["Function"] = "saveImage";
}
// send data from asynchronously uploaded image (as image URI)
// to PHP script which will write data to file
ImageUploader.prototype.uploadImage = function () {
var iu = this;
var fileReader = new FileReader();
fileReader.onload = function (e) {
iu.params["Image"] = e.target.result;
console.log(iu.params);
$.ajax({
type: "POST",
url: "/scripts/php/Form.php",
data: iu.params,
success: alert,
error: function (jqXHR, status, error) {
console.log(error, this);
}
});
};
this.params["FileName"] = this.imgEl.files[0].fileName || this.imgEl.files[0].name;
fileReader.readAsDataURL(this.imgEl.files[0]);
};
下面是它拒绝的示例对象:
{
FileName: "Matrix.jpg",
Function: "saveImage",
ID: 10,
Image: "data:image/jpeg;base64,...",
Line: 1,
Name: "Test Form"
}
此错误与您的iu.params
对象无关。 错误出在以下行上:
success: alert,
window.alert()
(或只是alert()
)函数需要在window
对象的"上下文"中调用。
当你执行success: alert
时,jQuery在运行AJAX请求的jqXHR对象的contect中调用成功回调。 像这样:
success.call(jqXHR, data)
我不知道jQuery使用的确切代码
因此,您的alert
在错误的"上下文"中被调用,因此它抛出了一个错误。 要修复它,只需将一个匿名函数传递给success
:
success: function(data){
alert(data);
}
或者,如果您确实愿意,可以使用.bind()
来确保在正确的上下文中调用alert()
:
success: alert.bind(window)
如果你真的想保留success: alert
,那么你可以通过在$.ajax
调用中添加context: window
来告诉jQuery在正确的上下文中调用它。
请注意,alert.bind()
(反过来context: window
)可能不适用于所有浏览器,因此不建议使用。 我建议您使用如图所示的匿名函数。
相关文章:
- AJAX调用中的非法调用
- 如何解决这种情况下的非法调用类型错误
- 为什么从数组调用时收到非法调用
- 使用ajax和bootbox进行非法调用
- 未捕获的类型错误:非法调用:模态形式的错误
- 对间谍对象的非法调用
- 非法调用错误 jquery
- $.post投掷”;非法调用”;
- 调用module.exports上的函数时发生CommonJS非法调用错误
- 使用 Web 音频 API 使用 start/noteOn 进行非法调用
- 为什么这会引发未捕获的类型错误:非法调用
- jQuery ajax Uncatch TypeError: 非法调用
- 什么是非法调用类型JavaScript中的错误
- 在 jquery 中将错误作为非法调用
- 为什么某些函数调用在 JavaScript 中被称为“非法调用”
- JavaScript 中的 getUserMedia() 跨浏览器规范化.非法调用
- Array.prototype.forEach.call 给出 TypeError: 非法调用
- 未捕获的类型错误:发送数据时非法调用
- 未捕获的类型错误:从 ajax 发送数据时出现非法调用错误
- 尝试将javascript转换为jquery时出现错误“非法调用”