FINAL EDIT:MVC3 Ajax.BeginForm ONSUCCESSはFirefoxで実行されません
ダーリンディミトロフからの回答、以下、私はこの問題は、コントローラのメソッドUpdateForm()
へのAJAX呼び出しがあったことになってしまったことを発見した後に空の文字列を返します。これは、私が以前は別の問題を経験した後、必要と判断した修正でした。空の文字列を渡すと、Firefoxのパーサーが鳴り響いていました(明らかにChromeとIEは気にしませんでした)ので、空の文字列を空のdiv
に置き換えました。
編集:以下ダーリンディミトロフの提案に
おかげで、私は問題を抱えた理由は、問題のフォームが送信されるたびにスローされるエラーが原因であることを見出しました。
エラーは「ノードが階層構造内の指定された位置に挿入することができません」を読み出します。これは、フォームが送信されるたびにスローされます。私はそれがXMLHttpRequestだと思うようにPOSTデータに気づいた。それが原因ですか(問題のAJAXリクエストはHTMLを返すだけです)?ここでFirebugのからのPOSTデータです:
このエラーは、 "XML解析エラー - 見つかりません要素" 読みます。
FYIからHTMLが返される、常に空の文字列です...
私はIIS7上で実行されているMVC3アプリケーションを持っています。
<form action="/RootName/ControllerName/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox" data-ajax-update="#TargetDiv" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
私は基本的にだ何:
@using (Ajax.BeginForm("UpdateForm", new AjaxOptions { UpdateTargetId = "TargetDiv", InsertionMode = InsertionMode.InsertAfter, OnSuccess = "ClearTextBox" }))
{
@Html.TextArea("txtInput", new { id = "txtInput", cols = "20", rows = "5", wrap = "virtual" })
<input id="send" class="button" type="submit" value="Send"/><br />
}
これは、コントローラは、このビューを提供し、次のHTMLを生成します。私のビューのいずれかで、私はマイクロソフトのHTMLヘルパー関数を使用して構築された形を持っています上記Send
ボタンがからテキストから明らかとをクリックされるたびに、ここでやろうとすることはTextArea
呼ばtxtInput
内のテキストを取得し、TargetDiv
と呼ばDiv
の最後に追加していますは、追加の後にClearTextBox()
メソッド(Javascript)を使用して完了します。 appendは常にすべてのブラウザで動作します。 Internet ExplorerやChromeで実行すると、テキストの消去は正常に機能します。しかし、FirefoxはClearTextBox()
メソッドを呼びたくないようです。
Firefoxはフォームの署名でこのdata-ajax-success
オプションと互換性がありませんか?私は
を試してみた
物事私はこの男を見つけました: Ajax.BeginForm doesn't call onSuccess
ソリューションは、このスクリプトを追加することです:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script>
私はこのスクリプトを呼び出しています:
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
...しかし、私はちょうどその場合にそれを交換しようとしました。喜びはありません。
私は、HTMLは次のように出てきたように、C#のチャットルームでは一部の人々によって括弧を含めるようにメソッド呼び出しを変更してみてくださいするように頼まれた:
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="ClearTextBox()" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
しかし、それは助けにはなりませんでした。 C#のチャットで
の人々はまた、私は警告とJavascriptの呼び出しを置き換える提案 - このような何か:クロムメッセージボックスをポップアップ表示しながら
<form action="/WebChat/TMWC/UpdateForm" data-ajax="true" data-ajax-mode="after" data-ajax-success="alert('yo!')" data-ajax-update="#chatText" id="form0" method="post">
<textarea cols="20" id="txtInput" name="txtInput" rows="5" wrap="virtual"></textarea>
<input id="send" class="button" type="submit" value="Send"><br>
</form>
を、Firefoxはしません!
"data-ajax-success"は、どのメソッドを呼び出すかを指定するカスタム属性のように見えるので、属性自体に問題があるとは思われません。私は何がdevのか分からない。 firefoxのツール(Chromeをほとんど使用しています)がありますが、コードのどこかにJSエラーがあるかどうかを確認します。 – justinb138
Firebugを使用していますが、何も指摘していませんでした=( –
'ClearTextBox()'メソッドを投稿できますか?これを試してみました(ファイル - >新しいmvc3プロジェクト、 'jquery.unobtrusive-ajax ClearTextBoxのバージョンは次のとおりです: 'function ClearTextBox(){$("#txtInput ")。val(" ");}' –