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