表单提交问题 - 需要将信息发送到数据库并需要重定向到感谢页面
以下是代码和小提琴链接。谢谢。
我正在尝试重定向到 - 谢谢你页面
相反,我被重定向到 - “action” - URL
使用现有代码,不存在向数据库发送信息的问题。它工作正常,只是它没有将我重定向到感谢页面。
HTML:
<form name="MailingList" method="post" Id="formId" action="URL" onsubmit="return validate_form(this);">
<input type="email" name="emailaddress" placeholder="Email Address" maxlength="100" size="28">
<br>
<input type="submit" name="Submit" value="Submit" width="260px">
</form>
var frmvalidator = new Validator("MailingList");
frmvalidator.addValidation("Email", "maxlen=50");
frmvalidator.addValidation("Email", "req");
frmvalidator.addValidation("Email", "email");
<script>
jQuery(function () {
jQuery('#subscribe').click(function () {
jQuery.ajax({
type: 'POST',
url: 'URL',
data: 'emailaddress=' + jQuery('input[name="emailaddress"]').val(),
success: function (data) {
if (jQuery(data).find('.subscribe_valid').length) {
location.href = 'Thank you page';
}
},
error: function () {
alert('error handling here');
}
});
});
});
</script>
答案 0 :(得分:0)
<强>先决条件强>
表单和脚本需要与Ajax目标生成相同的源 - 如果没有,则无需进一步阅读 - 例如,您永远不能从jsfiddle测试teabeyond。
必须在脚本
验证必须在jQuery加载事件处理程序
然后你需要 使用
取消表单提交....submit(function(e) {
e.preventDefault();
以下是尝试修复原始问题的代码。我期待一个序列化的形式而不是ajax中的上下文
注意 jsFiddle不能Ajax到jsFiddle本身以外的其他网站,所以代码不适用于jsFiddle
function validate_form(theForm) {
if (theForm.emailaddress.value=="") {
alert("Please enter email");
return false;
}
return true;
}
$(function () {
$('#formId').submit(function (e) {
e.preventDefault(); // cancel the form
if (validate_form(this)) {
// the form's action MUST point to a page on the same origin as the form
$.post(this.action, $(this).serialize(),
function () {
window.location.replace("https://www.othersite.com/Articles.asp?ID=252");
});
}
});
});
而不是$(this).serialize(),
你可以拥有
{"emailaddress2",this.emailaddress2.value}
答案 1 :(得分:-2)
您replace
没有做任何事情,因为您没有为其提供第二个参数。替换方法是这样的:
String.replace('texttolookfor', 'replacementtext');
如果您想重定向,那么您需要为replace
方法提供您想去的网址:
window.location.replace("https://www.teabeyond.com/Articles.asp?ID=252", "http://www.teabeyond.com/MailingList_subscribe.asp");
您可能希望使用控制台验证您的地址以及不是。
另外,根据@mplungjan,您需要阻止默认的提交操作。