2

jquery フォーム プラグインを試してみましたが、素晴らしく機能します。ああ、IE8を除いて。いつもie8です。

とにかく、成功応答のコールバックで、ie8 は成功関数を実際に呼び出す代わりに、応答をダウンロードするように促します。

ここに私のJavaScriptコードがどのように見えるかがあります

 $("#form1").ajaxForm({
                url: "http://localhost:4887/api/file/POST",
                type: "POST",                 
                success: function (data)
                {
                    //response stuff here                   
                }
            });

ajax フォームのデータ型を指定しようとしましたが、うまくいきませんでした。

サーバーから返されるのは単なる文字列だけです。繰り返しますが、IE8 は、success 関数を呼び出すだけでなく、この文字列をダウンロードするように求めます。いくつかの調査の後、http ヘッダーを変更する必要があるかもしれないことを理解しましたか? 誰かがこれに光を当てることができますか? または、これについて別の方法を教えてください。

更新 ここでは、C#コントローラーの簡単な説明を示します

public class fileController : ApiController
{     
    public JsonResult POST()
    {
        HttpPostedFile file = null; 


       string encodedString = //do stuff here to get the base64 string

        ModelName obj = new ModelName();

        obj.characters = encodedString;
        JsonResult result = new JsonResult();
        result.Data = obj;
        result.ContentType = "text/html";

        return result;

    }

リクエスト ヘッダー...

application/x-ms-application、image/jpeg、application/xaml+xml、image/gif、image/pjpeg、application/x-ms-xbap、application/vnd.ms-excel、application/vnd.ms-powerpoint を受け入れる、アプリケーション/msword、/

Accept-Language en-US

ユーザーエージェント Mozilla/4.0 (互換性; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; InfoPath.3; .NET CLR 1.1.4322)

Content-Type multipart/form-data; 境界= ----------------------------7dd3e622907b6

Accept-Encoding gzip、デフレート

プロキシ接続キープアライブ

コンテンツの長さ 300

応答ヘッダー HTTP/1.1 200 OK Cache-Control no-cache

プラグマのキャッシュなし

コンテンツ タイプ アプリケーション/json; 文字セット=utf-8

期限切れ -1

サーバー Microsoft-IIS/8.0

X-AspNet-バージョン 4.0.30319 X-Powered-By ASP.NET

4

1 に答える 1

1

これを試して:

[HttpPost]
public JsonResult POST()
{
    HttpPostedFile file = null; ;
    string encodedString = //get the file contents, and get the base64 encoded string        
    ModelName obj= new ModelName();
    obj.characters = encodedString;
    return   Json(obj, "text/html");

}

アップデート:

またはコンテンツタイプを変更します
Response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");

例:

public JsonResult POST()
    {
        HttpPostedFile file = null; ;
        string encodedString = //get the file contents, and get the base64 encoded string        
        ModelName obj= new ModelName();
        obj.characters = encodedString;
        Response.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
        return   Json(obj, "text/html");

    }
于 2013-10-06T19:58:55.177 に答える