0

カスタム JS オブジェクトを統合して、PHP プログラムの ui を改善しようとしています。しかし、どちらの言語も他の言語を認識していないため、私の方法論はぎこちなく、ぎこちなく感じられます。

いくつかの db レコードのセットと、非表示、削除、編集などのためのボタンのグループを表示する場合を考えてみましょう。PHP は mysql を呼び出してデータセットをロードするため、レコード ID を知っているのは PHP です。最終的な表示用にレコードをフォーマットする一環として<table>、フォームの適切な ID id="key_part'.$recid.'"、カスタム JS オブジェクトの HTML フレームなど、onclick="'.$jsobj.'.jsRoutine('.$recid.') ;"さまざまな JS ルーチンへのフォームの呼び出しを含む構造を作成します。

次に、さまざまな ID を認識するように JS コードを作成して、正しい HTML コードを非表示にする、表示する、色を変更する、髪を伸ばすなどの方法を認識できるようにします。

私を悩ませているのは、これら 2 つの異なるコード ベースを同期させておくという問題だと思います。明白な理由から、私は常にそれを避けようとしてきました。

サードパーティのライブラリのイデオシンクラシーの学習曲線を含まないより良い方法はありますか、それとも基本的に統合の実際的な限界にすでに達していますか?

建設的な意見をお寄せいただきありがとうございます。

4

2 に答える 2

1

実際の例で説明します。

編集、削除、非表示などをしたいレコードがたくさんあるとあなたは言いました。私はこれを何度も行いました:編集のために開く、削除、非表示などのアクションを含む「アクション」列を持つテーブルにレコードをリストします/unhide、上/下に移動、最初/最後に移動...

もちろん、これはすべて、PHP とフォームの送信またはページのリダイレクトの方法でのみ行うことができますが、データを管理するのに便利なように、これほどユーザーフレンドリーにしないのはなぜでしょうか? そこで、私は AJAX と JSON を使用し、jQuery フレームワークは、私がさらに詳しく説明することを達成するための私の親友でした。

それでは、問題を回避しましょう。

  • データベースにデータが保存されています(MySQLで動作します)
  • PHPで書かれたサーバー側があります(またはそれを書かなければなりません)
  • jQuery(AJAXおよびJSON)を使用してデータを管理できるフロントエンドがあります
    • ユーザーが実行するすべてのアクションは、AJAX リクエスト (jQuery) によってサーバー (PHP) に送信され、サーバーはアクションを管理し、フロントエンドに応答します。
    • また、データ自体はjQueryによって取得および表示されます

データの取得と表示

これは、PHP が MySQL データベースにクエリを実行することによって行われます。具体的な一連のレコードのみをクエリするために、offset や limit などのパラメーターを受け取るメソッド/アクションを準備します。

フロントエンド内で AJAX リクエストが PHP に送信され、レコードが取得されます。PHP がテーブルの最後に追加する完全な HTML マークアップを返すか、JSON 形式のデータから jQuery 内で HTML マークアップを設定できます。2番目のアプローチの方が良いと思います。

チェックボックスを含む列を作成できます (はい、すべてのテーブルをフォームにすることができますが、これは必須ではありません)。この値にはレコードの ID が含まれます。次に、提示したいデータを含む他の行と、特別なアクションへのリンクを含む「アクション」列を書き留めます。

アクションとデータ ページングの管理

したがって、デフォルトとして15行、最初の列にチェックボックスとレコードID、データ列とアクション列があるテーブルがあります。

ユーザーが 3 番目の行の非表示アクションをクリックします。jQuery によってクリック イベントをキャッチし、そのリンクから親の tr 要素を取得します。次に、その最初の子 (チェックボックスの値 - レコードの ID) を見つける td を見つけます。これで、ID を持つレコードを非表示にしたいことがわかりました。たとえば、9 とします。非表示アクションを管理するサーバーに対して AJAX 要求を実行する必要があり (おそらく、DB 内のそのレコードにフラグを設定するだけです)、成功すると応答が返されます。フロントエンドに送り返されます-これは、tr要素全体(およびその中のすべてのデータ)も非表示にするか、非表示/表示フラグを示すアイコンを変更するだけの瞬間です。

削除するときは tr 要素も削除し、移動するときは tr 要素も移動します。

リダイレクトなし、リロードなし、送信なし。

これは単なるコンテキストであり、コードであり、すべての作業はあなたにあります。JSON と AJAX を使用して、PHP + jQuery を使用してこれを実現する方法を描きたかっただけです。

また、このアプローチでは JavaScript をオンにする必要がありますが、JavaScript がサポートされていない場合でも、送信、リダイレクト、リロードできるようにアプリケーションを作成できます...

于 2012-05-21T18:54:12.080 に答える
1

Mustache、dust.js、Handlebars などのテンプレート フレームワークのいずれかを使用してみてください。そうすれば、PHP と JavaScript の間で共有できるテンプレートを外部化および標準化できます。

于 2012-05-21T18:25:09.417 に答える