私はAJAXを使用してフォームをPOST経由で送信するPHPアプリケーションを作成しています。 javascriptを使用できない場合は、通常通りHTML/PHP経由でフォームを送信します。php-interface forとajaxコール
私が本当にやりたいことは、JSONやXMLをAJAX呼び出しに戻すことです。フォーム処理ロジックを2回書くか全く自分自身を繰り返す必要はありません。
私は、AJAX呼び出しとPHPスクリプトの両方で使用できる単一のインターフェイスとしてフォーム処理ロジックを記述する最良の方法を判断しようとしています。
私は2つのオプションを思いつきましたが、どちらもハックのようです。私は、よりクリーンな、より良い、より正確なソリューションを提供することができますか、どちらが優先されるかを判断するために私の2つのソリューションを評価することができます。
フォーム: form.php プロセッサ: process.php
AJAX: JSをインターセプトバックJSにJSONの結果を返すprocess.phpし、form.phpに投稿をクリックし提出します。 JSは結果的にJSON結果を使用してHTMLを更新します。
PHP:特定の変数は、POSTデータに渡された場合、HTMLを出力するprocess.phpする
オプション1つの form.phpポスト。例えば
if ($_POST['output'] == 'html') {
//output as html
} else {
//output JSON
}
次いで( 'process.php')を含んでなるintermediate.phpするオプション2つの form.phpポスト、JSON出力を捕捉し、必要に応じてHTMLを表示するためにJSON出力を使用します。例えば
ob_start();
include('process.php');
$json = json_decode(ob_get_contents());
ob_end_clean();
//use json to create HTML to display to waiting user here
これらのオプションはどちらも少しハッキリです。 obestartを使用するときれいに何かをやっているように感じることはありませんが、process.phpを別の方法で書く必要はありません。外部Webサービスをよりよくエミュレートします。これは問題ではありませんがprocess.phpは完全に私のコントロール下にあるからです。
思考?
おかげでいつものように、 アーロン
ありがとうございます。私はこれを答えとして受け入れ、それが私が行った選択です。 – Alpaus