0

私はjQueryでPHPCodeIgniterを使用しています。

たとえば、私には<table>(おそらく従業員の)がいるとしましょう。上記のテーブルの上に、[従業員の追加]ボタンがあります。jQuery-dialogこのボタンはでを開きます<form>。このフォームが送信されると、もちろんサーバー側に送られ(エントリが重複しているかどうかが検証されます)、更新されたテーブルとともに対応するビューに返送されます。

私がやりたいのは、従業員が正常に追加されたこと、または重複エントリであることを示すダイアログを表示することです。

私はこれをやっています

appname/controller/action?addSuccess=true

また

appname/controller/action?addSuccess=false

ビューに戻るたびに、次に自分のページで、$(document).ready()そのようなクエリ文字列をチェックし、対応するダイアログ(成功またはエラーダイアログ)を開きます。今の私の問題は、ページを更新すると(同じURL)、ダイアログが再び表示されることです(サーバーサイドでは何も起こりませんが)。

質問:このアプローチで十分ですか?これを改善するための良いアドバイスはありますか?:)

どうもありがとう!。

4

1 に答える 1

2

その情報をクエリパラメータとして渡す代わりに、その情報をコードイグナイターのフラッシュデータに保存してみませんか。このデータは、1つのリダイレクトでのみ保持されます。次にページをリロードするとき、データは設定されず(CIが自動的にデータを削除するため)、誤って警告を表示することはありません。

  • フォームがサーバーに送信されます。CIのフラッシュメッセージシステムに適切な値を設定します。
  • 別のURLにリダイレクトしますか?または、別のビューを表示することもできます。
  • ビューhtmlで、phpを使用してそのフラッシュメッセージ値を読み取り、javascriptで適切な値を設定します。
  • そのjs値を読み取り、それに応じてポップアップ/モーダル/メッセージを表示します。
  • フラッシュメッセージデータは、次のページの更新時にCIによって自動的に削除されます。

リダイレクトされたビューのhtml用のサンプルコード:(私はphpをしません...)

var shouldDisplayWarning = "<? php code that sets some value based on flash variable ?>";
if (shouldDisplayWarning === "yes") {
  displayWarning();
}

さらに読む:http ://codeigniter.com/user_guide/libraries/sessions.html (ページの途中でフラッシュデータについて言及しています。)

于 2012-07-04T02:49:39.067 に答える