これが以前に尋ねられた場合は申し訳ありませんが、フォーム送信と、送信をクリックすると起動する ajax 呼び出しの両方でフォーム データを送信する必要があります。その理由は、ユーザーがリダイレクトされ、det formdata を事前にデータベースに保存したいからです。
だから私はフォームデータを送信するjavascript関数のonsubmitとfireのフォームを使用しようとします。これは機能せず、フォームが送信され、ajax 呼び出しは行われません。したがって、関数から ajax 呼び出しを取り出して、それが機能するかどうかを確認しようとすると、ページの更新時に ajax 呼び出しが行われ、データベースが更新されます。
いくつかのコードは次のとおりです。
HTML
<form id="danlevi" onsubmit="return senddata()" action='<?php echo esc_url( get_option( 'shopping_cart_url' ) ); ?>' method='post' enctype="multipart/form-data">
<input type="text" name="first" />
<input type="text" name="last" />
<input type="text" name="e-mail" />
<input type="text" name="phone" />
<input type="text" name="street" />
<input type="text" name="zip" />
<input type="submit" value="send" />
</form>
JavaScript
jQuery(document).ready(function() {
function senddata() {
var formdata = jQuery("#danlevi").serialize();
var decoded = decodeURIComponent(formdata);
strip = decoded.replace(/[\[\]]/g, "_");
alert(strip);
jQuery.ajax({
type: "POST",
url: 'dev/wp-content/themes/twentythirteen/custom/process_address.php',
data: strip,
});
}
});
これが機能しない理由がわかりません。私が望むのは、ajax呼び出しが行われるまでページが待機することです。完了したら、通常どおりフォームを送信します。
return false を使用すると、機能します。誰かが私が明らかに間違っていることを説明し、これを行う方法を教えてくれることを願っています. このコードに表示されるアラートは、デバッグ用です。