0

我收到以下错误:

[Exception... "The operation is insecure." code: "18" nsresult: "0x80530012 (SecurityError)" location: "http://code.jquery.com/jquery-1.9.1.js Line: 2257"]

我试图查找代码,但找不到异常是什么。简单地说,我传递了一个 Angularjs 对象,如下所示:

replyForm = {

    body: someString,

    // Gets the file from some input
    fileAttachment: event.target.files[0]

}

我有一个函数可以接收replyForm对象并尝试将其传递给一些函数,如下所示:

var exe = function (replyForm){

    //This is the line that causes my mozilla security exception to go off
    sendForm(replyForm);
};

var sendForm = function(replyForm){

    // This is when I get the security exception
    $('input.fileInput').val(replyForm.fileAttachment);
};

如果您想查看我的 fileAttachment 是如何在 Angularjs 中设置的,请参考以下内容:

.directive('ngFile',function(){
            return {
            scope: {
                ngFile: '='
            },
            link: function(scope, el, attrs){
                el.bind('change', function(event){
                    scope.$apply(function(){
                        scope.ngFile = event.target.files[0];
                    });

                });
            }
        };
    });

如果有人能告诉我传递带有附加到其中一个属性的文件的对象有什么问题,那就太好了。尽管 jQuery 试图对 dom 做一些事情似乎存在问题,这会产生一些安全异常。

4

1 回答 1

1

剥离图层后,您所指的行正在尝试input.value在文件输入字段上进行设置。出于安全原因,这是不可能的。文件输入字段的值必须由用户选择,不能由 JavaScript 设置。

如果您需要上传文件,则不需要文件上传字段 -FormData对象可以为您处理。这些方面的东西应该起作用:

var sendForm = function(replyForm){
  var fd = new FormData($("#myform"));
  fd.append("fileInput", replyForm.fileAttachment);
  ...
  $.ajax({..., data: fd});

FormData从 Firefox 4、Chrome 7 和 IE 10 开始支持。

于 2013-10-27T08:15:34.363 回答