2011-02-08 5 views
0

コンテキストPHP + AJAX

私はPHP + AJAXでよりダイナミックしたいのですが、プロジェクトに取り組んでいるとの記事を送信します。 私はJavascriptを完全に吸うので、私はAJAXの部分にjQueryを使用しています。とにかくそれは価値があると思われます。 私のアプリケーションが投稿を送信するためにフォームを使用する必要があるところに達しました。このアクションを実行するためにajax呼び出しを使用したいと思います。私が投稿したいページには、投稿された最新の15の投稿のリストもあります。

最初の質問:私はちょうどそれを忘れ、PHPだけを使うべきですか?

アクション

ユーザーは、私が$("#myPostSubmit").live('click', function() { /* here i make the ajax call */ });ようなものでjQueryのスクリプトで管理するよハンドラです<a id="myPostSubmit">Submit</a><textarea></textarea>とクリックで何かを書き込みます。投稿が正常に送信されたら、何かをするつもりです(私は次のセクションで話します)、のブラックボックスを4秒間表示する私のshowAlert(text)機能を使用してユーザーに警告するか、

2番目の質問:私は他の方法でクリックイベントを管理すべきか? sendpost(post)などの関数を作成して、それをHTML onclick=""イベントに追加する必要がありますか?

ポストが正常に

を送信された場合、私は約2オプションの議論を開くだろう:

  1. 私たちは、ページを更新するには、[実際 は、ページ全体を読み込むが、 をしていません 投稿リストを取得して、 古いものを消して、もう1つのajax呼び出しで、PHPファイルを に読み込んで新しい投稿を取得する( を送信したものを含む)、そして 投稿リストが表示されます]。 Pro:1)投稿リストが読み込まれた後にユーザーが読んでいるものは、送信された実際の投稿であると確信しています。実際には、アクションを二重にチェックします。 2)私たちはまた、平均で送信されたいくつかの可能性のある投稿を読み込みます。 短所:1)ポストリストテンプレートを取得するPHPファイルを作成し、そのページのテンプレートを2つのファイルに分割する必要があります。 2)それは本当に私にはスムーズに見えません。

  2. 投稿テンプレートを取得するためにJavascriptを使用して、リストに追加するだけです。 Pro:1)ページ全体を再読み込みすることなく、本当にスムーズにします。 2)ページをリロードするためにPHPファイルは必要ありません。 Javascript(jQuery)を使用します。 Cons:1)ポストhtmlテンプレートを取得してリストに追加するにはどうすればよいですか? 2)PHPなしでユーザー(ログ)情報を取得するにはどうすればよいですか?

3番目の質問:それは第一または第二ソリューションより良いですか?より良い第3のソリューションを提供しますか?

PHPページ

このAJAX呼び出しを受信するPHPページがある:?p=action&a=sendpost。ページには$_POST['myMessage']が設定されていて、空ではなく他のものは必要ありません。ページ自体は、すべてのユーザー情報をCookieから取得し、必要なクエリを実行することができます。

アプリケーション

それは3つの部分に分かれています:のAppテンプレート図書館。基本的に、アプリケーションの各ページには、独自の.app.php.tpl.phpファイルがあります。

  1. .app.phpファイルは、ライブラリからクラス や他のものを使用して、ページを元の建物 を管理します。 の場合、 データベースからデータを取得し、変数 に入れます。
  2. テンプレートは、.app.phpファイルの最後に呼び出されます。 .app.phpファイルは、取得したデータをテンプレートに送信し、.tpl.phpファイルがそれらを出力します。
  3. ライブラリは、アプリケーションファイルに必要なクラスと関数を格納するために使用されます。

第四に質問:これは私のWebアプリケーションを管理するのは良い方法ですか?

編集:アラートメッセージをユーザーに返すのはどうですか?

私は、成功または間違いの場合の応答を管理する$.ajax()内のオプションについて読んでいます。それについてのドキュメントはとてもシンプルで、私はそれを得ていませんでした。

フィフス質問:私はエラー または成功(PHPファイルから)を返す必要がありますどのように?

+0

jQueryフォームプラグイン(http://malsup.com/jquery/form)を検討しましたか? – Tomba

+0

実際の問題は提出プロセスではなく、次に何が起こるか(投稿リストの更新)です。とにかく、おそらく私に多くの助けになるjQueryフォームプラグインのおかげで。 – Shoe

+0

http://api.jquery.com/jQuery.post/ – Michael

答えて

1

最初の質問:私はちょうどそれを忘れ、PHPだけを使うべきですか?

さて、あなたのアプリケーションは、あなたがAJAXを使用している場合、この日は、私はうまくそれを考えるJavaScriptを中継します。)

2番目の質問:私は、他の方法でクリックイベントを管理すべきか? sendpost(post)などの関数を作成してHTML onclick = ""イベントに追加する必要がありますか?

関数を作成し、onclickをバインドします。コードはより読みやすくなります)

3番目の質問:1番目または2番目の解決策が優れていますか?より良い第3のソリューションを提供しますか?

私の解決策:フォームを送信し、コールバックで新しいコメントをリストに挿入するか、ユーザーがコメントできない場合はエラーメッセージを表示します。 ajaxを使用してフォームデータを送信する場合は、jQuery serilize()を確認してください。

第4の質問:これは私のWebアプリケーションを管理する良い方法ですか?

アプリケーションが大きくなると、それを再設計する必要がありますが、現在の解決策がうまく動作しなくなったときに行うことができます。 MVCフレームワークを構築するための良い本を読んでください。そして一般的なプログラミングパターンについて。

+0

あなたの答えをありがとう。 5番目の質問はどうですか? – Shoe

+1

jsonをajaxの返信形式として使用するのに成功とエラーのフィールドは含まれません。 – MatejB

1

あなたはすべてのことで正しいトラックにいるようです。イベントハンドラを正確に付け加える方法、ページ上のデータを再ロードする方法、アプリケーションを整理する方法などのベストプラクティスという意見がたくさんありますが、私は個人的にはそのような詳細について心配するのではなく、 。最終的に詳細があなたに届きます。

私は個人的に、ページ上のサーバー側でレンダリングされたHTMLの全体のチャンクを更新する方がより堅牢なソリューションであることを発見しました。