2

私はこのプラグイン(基本バージョンのみ) を使用しており、進行状況の更新にすべての優れた機能を利用して、独自の UI (Knockout.js と Twitter Bootstrap を使用) を操作しています。コンテキストのコード スニペットを次に示します。

    // The file is sent to an ASP.NET MVC Web Api service to do all the business logic/DB stuff
    uploadUrl = http://web.api.url/?apikey=key

    $("#fileUpload" + "@index").fileupload({
        headers: {
            'Authorization': "@Html.AccessToken()",
            'Accept': $.support.ajax ? "application/json" : "text/plain"
        },
        url: uploadUrl,
        add: function (e, data) {
            $.each(data.files, function (index, file) {
                // add to KO viewmodel
            });
            data.submit();
        },
        fail: function (e, data) {
            var error = data.errorThrown;
            var text = data.textStatus;
        },
        done: function (e, data) {
            // do some more viewmodel operations
        },
        progress: function (e, data) {
            var progressPercentage = parseInt(data.loaded / data.total * 100, 10);
            // update viewmodel
        }
    });

要素は#fileUpload<Index>ファイル入力です

これは、Chrome、FF、Safari ではうまく機能しますが、(驚くべきことに) IE では機能しません。ファイル入力からファイルを選択しようとすると、非常に奇妙な応答が返されます - ブラウザーがダウンロード ダイアログを開きますか?!

Do you want to open or save ?apikey=key (61 bytes) from webapiserver?

fileupload イベント リスナー内にブレークポイントを設定して IE のスクリプト デバッガーを使用しようとしましたが、内部にさえ入れられませんでした。私の研究では、accept-type の application/json が IE を台無しにすることを示すさまざまな投稿や記事を見てきました。

足りないものはありますか?

4

3 に答える 3

1

これが私のために働いたC#での修正の実装です

    var result = Json(statuses, JsonRequestBehavior.AllowGet);

    if (HttpContext.Request.AcceptTypes.Contains("application/json")) 
    {
        result.ContentType = "application/json";
    } 
    else // Hack for IE9 
    {
        result.ContentType = "text/plain";
    }

    return result;
于 2014-07-24T14:08:27.493 に答える
0

これは、返されるデータが application/json であるためです。IE がダウンロードとして解釈しないようにするには、サーバーで content-type text/html を指定する必要があります。

于 2013-01-27T22:11:42.187 に答える