送信ボタンにajax呼び出しを行う理由は、ユーザーがJavaScriptを無効にしていると自然なフォールバックが発生するためです。リクエストがajaxリクエストかまっすぐに送信された場合はバックエンドロジックを検出し、ajaxの場合はデータを返信し、そうでない場合はリクエストを 'old school'の方法で処理できるようにする必要があります。
編集:コンテキストの場合。ユーザーがJavaScriptを無効にしている場合、あなたのjQueryのこの
$('form').bind('submit', function(e){
e.preventDefault();
//do your stuff
});
ようになり
<form action="/processForm.php" method="POST">
<input type="submit" value="submit" />
</form>
その後、フォームは通常のよう/processForm.phpに提出します。
フォームがajaxを介して送信されたかどうかを検出するには、次のPHPを使用します(使用しているかどうかわかりませんが、これは私のものです)。
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
/* handle ajax here */
}else{
/* handle normal submit here */
}
「矛盾する」とはどういう意味ですか?矛盾していると思いますか? –
ajax呼び出しを行う前にデフォルトを禁止しない限り、サブミットプロセスとajaxプロセスによるフォームの提出が互いに矛盾していると感じました。 – shuniar
あなたのクライアントがAJAXをサポートしている場合、感謝メッセージを表示するか、何かのステータスを確認するために、新しいページ全体を取得するためにサーバーに往復する必要がありますか?私は自分自身の使用状況に応じて、AJAXを使用してデータを送信し、HTMLまたはJSONのいずれかを取り戻します。あなたがフォームのsubmitにDefaultを禁止しない限り、あなたは重複した投稿を得るでしょう。アイデアは、正常に劣化するようにコード化することです。フォームの送信にバインドし、AJAXが有効になっているかどうかを確認し、preventDefaultであるかどうかを確認してから、AJAXを実行します。 –