簡體   English   中英

jQuery fileupload在IE 8和9中不起作用

[英]jQuery fileupload not working in IE 8 and 9

在此輸入圖像描述

此代碼適用於FF和chrome。 在IE 8或9中,我得到500錯誤,表示not null屬性為null。

這是html

<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

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);
            }
        }
    });
};

控制器方法是

public virtual JsonResult SomeMethod(IEnumerable<HttpPostedFileBase> postedFiles, int id)

我能夠通過包含jquery.iframe-transport.js讓它工作,然后我不得不從div中刪除我的淘汰“with”數據綁定以使其在IE8中工作,因為它在IE9中工作。 (我在發布的代碼之上有綁定)感謝所有的建議。

由於此函數在FF中工作正常,因此只有一種可能性,即您在此處傳遞的變量僅適用於IE。

檢查IE控制台中的每個變量值。

提示:IE對類型和一切都很嚴格。

例如:

parseInt(Number);  

FF和Chrome將其視為十進制值,而IE則將其視為八進制數。 因此,建議給出parseInt(Number,10)

如果你提供,甚至關於日期

var currentDate = new Date("March 18, 2013 11:13:00")

適用於Chrome和FF,但在IE中顯示undefinedinvalid Date

您可以在此處找到有關日期推薦表示法的更多信息

所以,在上面的例子中,我只是想說你可能忘記聲明類型正確的符號

雖然,這不是您所尋求的答案,但我希望這些信息對您有所幫助。

更新 :由於錯誤是500 error ,那么問題可能更多可能在rootPath變量的值中。

只需將content-type設置為text / html並將其作為JSON發送即可。

這適用於所有瀏覽器。

            $("#txt1").fileupload({
            replaceFileInput: false,
            dataType: "json",        
            datatype:"json",
            url: "<%=Page.ResolveUrl("~/WebService/AddAttachment.ashx")%>",
            done: function (e, data) {
                $.each(data.result, function (index, value) {
             //You get the response data in here from your web service
                })
                $("#txt1").val("");
            }`enter code here`
        }); 

這在IE8和IE9 +上面都經過測試並正常工作。 請確保使用正確的dataType:“json”(或數據類型:“json”),並確保您的Web服務方法的響應正確。 謝謝

在IE上如果你在上傳文件時返回像json這樣的數據,你可以得到這樣的數據(json):

done: function (e, datos)
{
try
{
   //This in FF, Chrome, Safari
   data=eval(JSON.parse(datos.result));
}catch (er)
{
    //This in IE
    data=eval(JSON.parse(datos.result[0].documentElement.innerText));
}

如果通過jQuery fileupload你的意思是使用http://blueimp.github.com/jQuery-File-Upload/,那么它在瀏覽器支持部分清楚地說,IE 10+是他們實現的每個功能所必需的。

https://github.com/blueimp/jQuery-File-Upload/wiki/Browser-support

如果您的意思是另一個插件,請忽略我的評論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM