OnSuccessのコールバックを使用したajax.beginformの非常に標準的なレイアウトがあります。ただし、IE8では、コールバックは呼び出されませんが、Chromeでは正常に機能します。
ビューにjquery.validate.min.js、jquery.validate.unobstusive.min.js、およびjquery.unobstrusive-ajax.min.jsを含めています。
ビューは部分ビューとして使用され、必要なすべてのスクリプトと、コールバックが呼び出すjavascript関数が含まれています。
また、MVC3プロジェクトの最初の作成に付属していたjquery.validate.min.jsを、IE8で既に正しく機能するものにアップグレードする必要があったことにも注意してください。
これが機能しない理由に関する既知の問題はありますか?それとも私は何かが足りないのですか?
[cshtml]
<script type="text/javascript">
function FormSuccess(context) {
alert("FormSuccess()");
};
</script>
@using (Ajax.BeginForm("GetMessage", "Form", new AjaxOptions { OnSuccess = "FormSuccess" }))
{
[コントローラ]
[HttpPost]
public JsonResult GetMessage(MessageModel model)
{
return Json( success = true, message = "success" );
}
Chromeではコールバックがヒットしますが、IE8ではファイルのダウンロードダイアログが表示されます。ファイルをダウンロードすると、次のファイルが含まれています。
{"success":false,"messages":"success"}
ご覧のとおり、これは私がここで行っている非常に単純なことですが、IE8では機能したくないようです。
何か案は?
アップデート
かみそりのcshtmlファイルをascxページからレンダリングしているため、AjaxOptionsコールバックが呼び出されていないことがわかりました。同じことを行うサンドボックスアプリを作成しました。cshtmlで部分的なcshtmlをレンダリングすると、すべて正常に機能しますが、aspxで部分的なcshtmlをレンダリングすると、コールバックが呼び出されません。