14

ここに画像の説明を入力

このコードは FF と chrome で動作します。IE 8 または 9 では、null でないプロパティが null であることを示す 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>

ここにジャバスクリプトがあります

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

1

この関数は FF で正常に動作しているため、ここで渡す変数が IE だけで未定義である可能性は 1 つだけです。

IE コンソールで各変数の値を確認します。

ヒント: IE は型とすべてについて厳格です。

例えば:

parseInt(Number);  

FF と Chrome は 10 進数と見なしますが、IE は 8 進数と見なします。なので、あげるのparseInt(Number,10)がオススメです。

日付に関しても、提供する場合

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

Chrome と FF で適切に動作しますが、ショーundefinedまたはinvalid DateIE で表示されます。

日付の推奨表記について詳しくは、こちらをご覧ください。

したがって、上記の例では、 typeを宣言するか、notation を修正するのを忘れている可能性があることを伝えようとしています。

これはあなたが探していた答えではありませんが、この情報が役に立てば幸いです。

更新: エラーがであるため、問題は変数の値500 errorにある可能性が高くなります。rootPath

于 2013-03-18T07:26:08.407 に答える
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 + の両方で正常に動作します。正しい dataType:"json" (または datatype:"json") を使用していることを確認し、Web サービス メソッドの応答が正しいことも確認してください。ありがとう

于 2013-10-10T14:17:07.580 に答える
0

content-type を text/html に設定し、JSON として送信するだけです。

これはすべてのブラウザで機能するはずです。

于 2013-09-13T14:16:44.823 に答える
-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 に答える