jsonレスポンスを返すフォームポストを扱うベストプラクティスは何ですか? JSONを返す私たちのサイトのモバイル版でいくつかのコードを再利用しようとしていますが、私はJavaScriptを処理する最良の方法が不明です。私はダイアログを作成したい。私は実際にform-tagにdata-ajaxをfalseに設定し、$ .postを代わりに呼び出さなければなりませんか?jQueryモバイルとJSONのポストレスポンス
おかげで、 ロブ
jsonレスポンスを返すフォームポストを扱うベストプラクティスは何ですか? JSONを返す私たちのサイトのモバイル版でいくつかのコードを再利用しようとしていますが、私はJavaScriptを処理する最良の方法が不明です。私はダイアログを作成したい。私は実際にform-tagにdata-ajaxをfalseに設定し、$ .postを代わりに呼び出さなければなりませんか?jQueryモバイルとJSONのポストレスポンス
おかげで、 ロブ
この記事の助けあなたウィル?
http://www.giantflyingsaucer.com/blog/?p=2574
たぶん、あなたはもう少し説明することができ、あなたは「私は本当に、フォームタグにfalseにデータ-AJAXを設定する必要がありますか」と何を意味するのですか? AJAXのやり方を維持したいと思うなら、例えば$ .postや$ .ajaxのようなフォームPOSTを扱わなければならないと思います(例を参照)
はい、jQuery Mobileでフォームの送信を処理するには、 data-ajax="false"
をフォームタグに追加すると、jQuery Mobileフレームワークはそれを処理しません。その後、submit
イベントのセットアップ、独自のハンドラをすることができます
//add event handler to your form's submit event
$('form').on('submit', function (e) {
var $this = $(this);
//prevent the form from submitting normally
e.preventDefault();
//show the default loading message while the $.post request is sent
$.mobile.showPageLoadingMsg();
//send $.post request to server, `$this.serialize()` adds the form data to the request
$.post($this.attr('action'), $this.serialize(), function (response) {
//you can now access the response from the server via the `response` variable
$.mobile.hidePageLoadingMsg();
}, 'json');//you can set the response data-type as well
});
はここ$.post()
のドキュメントです:http://api.jquery.com/jquery.post/
注:.on()
は減価償却.bind()
機能の代わりに使用されている:http://api.jquery.com/on/
あなたはJasperの例に.error()ハンドラを追加したい場合があります。そうでない場合は、jqueryまたはサーバ側でエラーが発生した場合、ローディング・メッセージはユーザーがページをリフレッシュしておそらくal彼が入力したデータのot。
//add event handler to your form's submit event
$('form').on('submit', function (e) {
var $this = $(this);
//prevent the form from submitting normally
e.preventDefault();
//show the default loading message while the $.post request is sent
$.mobile.showPageLoadingMsg();
//send $.post request to server, `$this.serialize()` adds the form data to the request
$.post($this.attr('action'), $this.serialize(), function (response) {
//you can now access the response from the server via the `response` variable
$.mobile.hidePageLoadingMsg();
}, 'json') //you can set the response data-type as well
.error(function(e) {
$.mobile.showPageLoadingMsg();
console.log('my_function_name, ' + e.responseText);
});
});