Я сожалею, если это было задано раньше, но мне нужно отправить данные своей формы как с формой, так и с вызовом ajax, который срабатывает при нажатии submit. Причина в том, что пользователь перенаправляется, и я хочу заранее сохранить det formdata в моей базе данных.
Поэтому я пытаюсь использовать форму onsubmit и fire функции javascript, которая отправляет formdata. Это не работает, форма отправляется и не выполняется никакой аякс-вызов. Поэтому я пытаюсь вывести вызов ajax из функции и посмотреть, работает ли она тогда, и это происходит, при обновлении страницы выполняется вызов ajax и обновляется моя база данных.
Вот код som:
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>
Java – script
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, он работает. Я надеюсь, что кто-то может объяснить, что я, очевидно, делаю неправильно, и покажу мне способ сделать это. Предупреждение, которое вы видите в этом коде, предназначено только для отладки.
Подождите, пока ajax завершится, затем отправьте форму.
jQuery(document).ready(function() { function senddata() { var formdata = jQuery("#danlevi").serialize(); var decoded = decodeURIComponent(formdata); strip = decoded.replace(/[\[\]]/g, "_"); alert(strip); jQuery.ajax({ type: "GET", url: 'dev/wp-content/themes/twentythirteen/custom/process_address.php', data: strip, complete: function(){ jQuery("#danlevi").submit(); //submit the form after ajax completes } }); return false; //stop the form from initially submitting } });