造成什么原因" Uncaught TypeError:非法调用"在这段代码?

时间:2015-06-10 01:19:06

标签: javascript jquery asp.net ajax asp.net-mvc

Google Chrome的控制台告诉我

  

未捕获的TypeError:非法调用

调用以下函数时

{{1}}

我已经在这个问题上查看了StackOverflow帖子,但没有任何原因与我在我看到的任何内容有关。我不确定它是否重要,但我可以发布HTML和控制器,如果这可能是问题的一部分。

1 个答案:

答案 0 :(得分:0)

您错过了$.ajax来电的两个选项,这些

contentType: false,
processData: false,

像这样做

$.ajax({
    xhr: function () {
        var xhr = new window.XMLHttpRequest();
        xhr.upload.addEventListener("progress", function (evt) {
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total * 100;
                console.log("percentComplete = " + percentComplete);
            } else {
                console.log("lengthComputable evaluated to false;")
            }
        }, false);

        xhr.addEventListener("progress", function (evt) {
            if (evt.lengthComputable) {
                var percentComplete = evt.loaded / evt.total * 100;
                console.log("percentComplete = " + percentComplete);
            } else {
                console.log("lengthComputable evaluated to false;")
            }
        }, false);

        return xhr;
    },
    type: 'POST',
    url: '@Url.Action("upload","FileUploadAsync")',
    data: data,
    contentType: false,
    processData: false,
    success: function (data) {
        console.log("success!");
    }
});

如果让jQuery在内部处理文件,则会引发Illegal invocation错误。