どのようにできます。IsAjaxRequest()がtrueであるからfirefoxがfalseの場合internet explorerの場合jqueryを使ったポスト
-
24-09-2019 - |
質問
うことにより試験jqueryます。I am投稿フォームの更新したいでデザインに置き換えに成功形上の本部長に思われる共用の場合)。
次のコードの動作にfirefoxなります。
問題があることからFirefox ます。IsAjaxRequest() がtrueのものからIE, ます。IsAjaxRequest() はfalseを返す
注意:くつろぎいただけますのねじになります。睡眠私のコントローラのアクションだけで試験的に確認できる参照いただきました。
こちらはmyビューコード:
<div id="contact">
<form action="/Tracker/Add" method="post">
<fieldset id="inputbox">
<p>
<label>Today's number</label> <input class="inputText" id="weight" name="weight" type="text" value="208" /></p>
<p><label>Today's Date</label> <input class="inputText" id="datepicker" name="date" type="text" value="03-Mar-2010" /></p>
<p><input type="submit" value="Enter" /></p>
</fieldset>
こちらはjavascript/jqueryコード:
<script type="text/javascript" src="../../Scripts/jquery/1.3.2/jquery-1.3.2.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
$('#contact form').live('submit', function() {
//$("#Loading").fadeIn(); //show when submitting
$.post($(this).attr('action'), $(this).serialize(), function(data) {
$("#contact").replaceWith($(data));
});
return false;
});
});
</script>
これが私のコントローラのアクション:
public ActionResult Add()
{
if (if (Request.IsAjaxRequest())
{
//firefox will hit this but IE wont
}
Thread.Sleep(5000);
return PartialView("EntryView", new MyViewModel());
}
解決
私はあなたのコードが(私は、エラーを見つけることができませんでしたした)jQueryの1.3.2とIE 6.0.2900.5512とXHRリクエストを送信していなかったことを確認し、次の使用可能なバージョン、1.4.0へのアップグレードjQueryのは、壊れた動作を修正しました。 AJAXを使用して、1.4.0(以上)、IEポストフォームとし、X-要求-で動作するIsAjaxRequest()
に必要なヘッダを送信します。あなたはjQueryのをアップグレードすることができますか?私はこのための具体的なバグ/修正を見つける任意の運を持っていなかったが、あなたは1.3.2に固執する必要がある場合、私は掘り続けることができます。
他のヒント
右jQueryのコードの後、次のコードを追加します:
jQuery.ajaxSetup({
beforeSend: function(xhr) {
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
}
});
これはのX-要求-でのすべてのAJAXリクエストのヘッダーます。
を追加するために、ブラウザを強制的にフォートワース多くのバグ修正があるようにjQueryの最新バージョンを使用することは推奨されていることを指摘ます。
は、それが助けをしない場合、IEはヘッダを送信するかいないかどうかを確認するために、のフィドラーので要求を検査してください。
それは見えます。デバッグ中にHTTPヘッダX-Requested-With: XMLHttpRequest
の存在を確認します。