2011-11-14 10 views
1

jsonレスポンスを返すフォームポストを扱うベストプラクティスは何ですか? JSONを返す私たちのサイトのモバイル版でいくつかのコードを再利用しようとしていますが、私はJavaScriptを処理する最良の方法が不明です。私はダイアログを作成したい。私は実際にform-tagにdata-ajaxをfalseに設定し、$ .postを代わりに呼び出さなければなりませんか?jQueryモバイルとJSONのポストレスポンス

おかげで、 ロブ

答えて

0

この記事の助けあなたウィル?

http://www.giantflyingsaucer.com/blog/?p=2574

たぶん、あなたはもう少し説明することができ、あなたは「私は本当に、フォームタグにfalseにデータ-AJAXを設定する必要がありますか」と何を意味するのですか? AJAXのやり方を維持したいと思うなら、例えば$ .postや$ .ajaxのようなフォームPOSTを扱わなければならないと思います(例を参照)

7

はい、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/

1

あなたは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); 
    }); 
}); 
関連する問題