Javascript 提交表单后如何重定向到特定页面

Javascript 提交表单后如何重定向到特定页面,javascript,jquery,html,ajax,forms,Javascript,Jquery,Html,Ajax,Forms,我有一个表单,当你提交它时,它会将你插入的数据作为电子邮件发送给某人。然后,页面会将您重定向到主页 我想要的是阻止服务器端执行的重定向。我需要能够选择在提交表单后重定向到哪里,而不是服务器端 所以我所做的是,我使用Javascript阻止重定向,然后我决定在提交后去哪里 这是表格 $(“#CustomerRequestyForm”).submit(函数(e) { e、 预防默认值(); //我的重定向// if(window.location.href.indexOf(“nodeId”)>-1

我有一个表单,当你提交它时,它会将你插入的数据作为电子邮件发送给某人。然后,页面会将您重定向到主页

我想要的是阻止服务器端执行的重定向。我需要能够选择在提交表单后重定向到哪里,而不是服务器端

所以我所做的是,我使用Javascript阻止重定向,然后我决定在提交后去哪里

这是表格

$(“#CustomerRequestyForm”).submit(函数(e)
{
e、 预防默认值();
//我的重定向//
if(window.location.href.indexOf(“nodeId”)>-1)
{
window.location=“/en/our service/”
}
其他的
{
window.location=“/en/”
}
});

名字


单位
电话
可移动的
电子邮件
我可以阻止服务器重定向。而且我的重定向工作。。但主要问题是。。该表单不再发送电子邮件

您需要使用ajax手动发送数据

或者,如果您控制服务器,请执行重定向服务器端。

试试这个

$(“#CustomerRequestyForm”).submit(函数(e){
e、 预防默认值();
$.post(”https://test.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8“,$(this).serialize(),函数(数据,状态){
控制台日志(数据);
控制台日志(状态);
var obj=JSON.parse(数据);
//在这里阅读服务器响应
//我的重定向//
if(window.location.href.indexOf(“nodeId”)>-1){
window.location=“/en/our service/”
}否则{
window.location=“/en/”
}
});
});

名字


单位
电话
可移动的
电子邮件
提交
您可以使用jQuery通过AJAX发送表单。 使用它,您可以在后台发送数据,获取响应并相应地重定向,而不是提交页面并重定向到提交的URL

$.ajax({
类型:“POST”,
url:url,//要将数据发送到的url
data:data,//以某种方式将输入数据绑定到变量并传递它
success:someFunction,//您将在此函数中从服务器获得响应
数据类型:“JSON”

});通常由获取表单数据的脚本完成(在您的示例中为
https://test.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8
),您只需在同一个
test.salesforce.com
上有此表单的页面中放入重定向代码。使用隐藏的iframe或ajax提交表单使用
serialize()
序列化数组()
复制使用默认表单提交发送的数据
// after e.preventDefault()
const xhr = new XMLHttpRequest ;
xhr.open("POST","https://test.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8")
const formData = new FormData(document.getElemetById('CustomerEnquiryForm'))
xhr.send(formData)
xhr.onreadystatechange = function(){
    if( xhr.readyState === xhr.DONE && xhr.status === 200){
       // read server response
       console.log(xhr.reponseText)
       // redirect here
    }
}