14

在此处输入图像描述

此代码适用于 FF 和 chrome。在 IE 8 或 9 中,我收到一个 500 错误,指出非空属性为空。

这是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)
4

6 回答 6

6

我能够通过包含 jquery.iframe-transport.js 来使其工作,然后我必须从 div 中删除我的淘汰赛“with”数据绑定以使其在 IE8 中工作,因为它在 IE9 中工作。(我在发布的代码上方有一个绑定)感谢所有建议。

于 2013-03-22T15:04:02.157 回答
1

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

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

提示:IE 对类型和所有内容都很严格。

例如:

parseInt(Number);  

FF 和 Chrome 将其假定为十进制值,而 IE 将其假定为八进制数。因此,建议给予parseInt(Number,10)

甚至关于日期,如果你提供

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

在 Chrome 和 FF 中运行良好,但undefinedinvalid DateIE 中显示。

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

所以,在上面的例子中,我只是想说你可能忘记声明type正确的 notation

虽然,这不是您要寻找的答案,但我希望这些信息对您有所帮助。

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

于 2013-03-18T07:26:08.407 回答
0

只需将内容类型设置为 text/html 并将其作为 JSON 发送。

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

于 2013-09-13T14:16:44.823 回答
0
            $("#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 + 以上都经过测试并且工作正常。请确保使用正确的数据类型:“json”(或数据类型:“json”),并确保您对 Web 服务方法的响应是正确的。谢谢

于 2013-10-10T14:17:07.580 回答
0

在 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));
}
于 2014-02-18T10:07:21.227 回答
-2

如果通过 jQuery fileupload 你的意思是使用http://blueimp.github.com/jQuery-File-Upload/那么它在浏览器支持部分清楚地表明他们实现的每个功能都需要 IE 10+。

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

如果您的意思是另一个插件,请忽略我的评论。

于 2013-03-21T19:36:29.927 回答