如果之前有人问过这个问题,我很抱歉,但我需要通过表单提交和单击提交时触发的 ajax 调用来发送表单数据。原因是因为用户被重定向,并且我想预先将 det 表单数据存储到我的数据库中。
所以我尝试使用表单 onsubmit 和 fire 提交表单数据的 javascript 函数。
这不起作用,表单已发送并且没有进行 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,它就有效。我希望有人能解释我明显做错了什么,并告诉我这样做的方法。您在此代码中看到的警报仅用于调试。
等待 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
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)