質問
AJAX によって要求されたページによって呼び出される PHP コールバックを使用して、AJAX 経由で渡される PHP コールバックを実装するにはどうすればよいですか?
セットアップ
コメントは AJAX 経由で投稿され、パラメーターはシリアル化されて暗号化されて渡されます (そのため、転送中に変更したり、コメント システムを悪用するために慎重に作成された AJAX 要求を作成したりすることはできません)。問題は、コメント自体とは異なる mysql テーブル (コメントが使用されるすべての場所で変更される) のフィールドを更新するために、新しい総コメント量が必要なことです。
例
誰かがフォーラム トピックにコメントを残した場合、そのトピックはコメントの総数を知る必要があります (これを知る必要があるたびにコメント テーブルをクエリする必要はありません)。問題は、コメントが AJAX 経由で投稿された場合、テーブルが何を更新するのか、どのフィールドが更新されるのかなどがわからず、追加のコードを実行する必要があることです (コメントを残したすべてのメンバーのログも記録するなど)。特定のトピックについて)。
解決
コメント ウィジェットを宣言するときに、クロージャを使用して 2 つの PHP コールバックを追加することを考えました。これらの 2 つのコールバック (onSuccess() onFailure()) は、コメントの総数を数えたり、特定のフォーラム トピックのコメントの総数を更新したりするなど、必要なすべての作業を行うことができます。次に、シリアル化して暗号化し、ajax を介してパラメーターとして渡し、次に PHP でコールバックを復号化およびシリアル化解除して実行します。
ソリューションが壊れる理由
クロージャーはシリアライズできないからです!また、誰かが提案する前に、私は eval を使用していません。
再び質問
AJAX によって要求されたページによって呼び出される PHP コールバックを使用して、AJAX 経由で渡される PHP コールバックを実装するにはどうすればよいですか?
アップデート
一部の人は、質問全体を読んでおらず、コールバックが PHP で行われるべきであることを理解していないようです - javascript (AJAX コールバックを使用) ではありません。AJAX は、投稿されたコメントを転送するためだけに使用されます。処理は行われません (これが PHP の機能であり、問題となるコールバックが発生する場所です)。