首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >jQuery文件上传在IE 8和9中不起作用

jQuery文件上传在IE 8和9中不起作用
EN

Stack Overflow用户
提问于 2013-03-15 14:13:49
回答 6查看 34.3K关注 0票数 14

这段代码可以在FF和chrome中运行。在IE8或IE9中,我得到一个500错误,告诉我一个非空属性是空的。

这是html

代码语言:javascript
复制
<div id="upload_button_div_general" class="fileupload-buttonbar" data-url="/Upload/SomeMethod">
    <label class="fileinput-button ui-button ui-widget ui-state-default ui-corner-all ui-button-text-icon-primary" role="button"> 
        <span class="ui-button-text">
            <span>Add Documents...</span> 
        </span>
        <input id="upload_button" type="file" name="postedFiles" multiple="" />
    </label>
</div>
<div id="UploadMessage" data-bind="visible: showMessage"> 
    <span>Documents</span>

    <ul data-bind="foreach: upload()">
        <li> 
            <a href="#" data-bind="click: $parent.openFile">
                <span data-bind="text: $data.fileName">  </span>
            </a>
        </li>
    </ul>
</div>

这是javascript

代码语言:javascript
复制
function Upload(div, additionalParams, successFunc, failureFunc) {
    $('#' + div).fileupload({
        dataType: 'json',
        url: rootPath + 'Upload/SomeMethod',
        formData: additionalParams,
        start: function (e, data) {
            showLoading();
        },
        stop: function (e, data) {
            hideLoading();
        },
        add: function (e, data) {
            data.submit();
        },
        always: function (e, data) {
            var result = data.result;
            if (result.HasError) {
                failureFunc(result.Error);
            } else {
                successFunc(result);
            }
        }
    });
};

控制器方法是

代码语言:javascript
复制
public virtual JsonResult SomeMethod(IEnumerable<HttpPostedFileBase> postedFiles, int id)
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-03-22 23:04:02

我能够通过包含jquery.iframe-transport.js让它工作,然后我不得不从div中删除"with“数据绑定来使它在IE8中工作,因为它在IE9中工作。(我在我发布的代码上面有一个with binding )谢谢你的所有建议。

票数 6
EN

Stack Overflow用户

发布于 2013-03-18 15:26:08

由于此函数在FF中运行良好,因此只有一种可能性,即您在此处传递的变量仅针对IE未定义。

在IE控制台中检查每个变量的值。

提示: IE对类型和所有东西都很严格。

例如:

代码语言:javascript
复制
parseInt(Number);  

FF和Chrome假定它是十进制值,而IE假定它是八进制数。因此,推荐使用parseInt(Number,10)

甚至是关于日期,如果您提供

代码语言:javascript
复制
var currentDate = new Date("March 18, 2013 11:13:00")

在Chrome和FF中工作良好,但在IE中显示undefinedinvalid Date

您可以找到有关推荐的日期here表示法的更多信息

所以,在上面的例子中,我只是想告诉你,你可能忘记了声明类型,或者正确的符号

虽然这不是你想要的答案,但我希望这些信息能帮助你。

更新:由于错误是500 error,那么问题更有可能是rootPath变量的值。

票数 1
EN

Stack Overflow用户

发布于 2013-09-13 22:16:45

只需将content-type设置为text/html并将其作为JSON发送。

这应该适用于所有浏览器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15425934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档