javascript - 使用 Kendo UI 上传控件将请求 header 添加到 XmlHttpRequest

标签 javascript kendo-ui

我正在尝试使用 Telerik 提供的代码将请求 header 添加到 XHR,但出现以下错误。

“0x800a139e - JavaScript 运行时错误:InvalidStateError”

这是代码

$(document).ready(function () {
                        $("#file").kendoUpload({
                            multiple: false,
                            async: {
                                saveUrl: "save",
                            },
                            upload: onUpload,

                        });
                    });

function onUpload(e) {
                        var xhr = e.XMLHttpRequest;
                        if (xhr) {
                            xhr.addEventListener("readystatechange", function (e) {
                                if (xhr.readyState == 1 /* OPENED */) {
                                    xhr.setRequestHeader("X-Foo", "Bar");
                                }
                            });
                        }
                    }

最佳答案

事实证明,Internet Explorer 使用 readyState 1 触发 readystatechange 两次,第二次执行处理程序导致错误。作为当前情况的解决方法,您可以命名已执行的处理程序并在第一次执行后解除绑定(bind)。

function onUpload(e) {
                    var xhr = e.XMLHttpRequest;
                    if (xhr) {
                        xhr.addEventListener("readystatechange", function onUploadReady(e) {
                            if (xhr.readyState == 1 /* OPENED */) {
                                xhr.setRequestHeader("X-Foo", "Bar");
                                xhr.removeEventListener("readystatechange", onUploadReady);
                            }
                        });
                    }
                }

关于javascript - 使用 Kendo UI 上传控件将请求 header 添加到 XmlHttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25085121/

相关文章:

javascript - JQuery - 使用 .html() 设置后获取 .html()

javascript - KineticJS 中的动画

kendo-ui - 基于选中事件的 KendoChart 过滤无法正常工作

html - Base64 图像不会使用任何常用方法缩小

javascript - 阻止 Kendo 将时间转换为本地时区

javascript - DynamoDB 中的正向和反向分页

javascript - 在多个函数中等待相同的 API 调用

Javascript/Rails - 如何在 javascript 中包装 link_to 而不是 <an></a>

angularjs - 以 Angular 动态设置剑道窗口标题和内容,然后在单击表单上的按钮时打开窗口