Как перенаправить на определенную страницу после отправки формы - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть форма, когда вы отправляете ее, она отправит ваши вставленные данные кому-то по электронной почте.Затем страница перенаправляет вас на домашнюю страницу.

Я хочу предотвратить перенаправление на стороне сервера.и мне нужно иметь возможность выбрать, куда перенаправить после отправки формы, а не на стороне сервера.

Итак, что я сделал, я использовал Javascript для предотвращения перенаправления, затем я определил, куда идти после отправки.

Вот форма

 $("#CustomerEnquiryForm").submit(function (e)
   {
        e.preventDefault();
        
        // My redirection //
        if (window.location.href.indexOf("nodeId") > -1)
        {
            window.location = "/en/our-service/"
        }
        else
        {
            window.location = "/en/"
        }

           
    });
<form id="CustomerEnquiryForm" action="https://test.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8" method="POST">
  
  
  
  
    <label for="first_name">First Name</label>
    <input id="first_name" required="required" name="first_name"  type="text" />
     <br>


    <label for="last_name">Last Name</label>
    <input id="last_name" required="required"  name="last_name"  type="text" />
    
    <br>

    <label for="company">Company</label>
    <input id="company" required="required"  name="company"  type="text" /><br>

    <label for="phone">Phone</label><input id="phone"  name="phone"  type="text" />
    <br>

     <label for="mobile">Mobile</label>
     <input id="mobile" required="required"  name="mobile"  type="text" />
     <br>

     <label for="email">Email</label>
     <input id="email" required="required"  name="email" type="text" /><br>





  </form>

Я мог предотвратить перенаправление сервера.и мое перенаправление работает ... но главная проблема ... форма больше не отправляет электронные письма.

Как решить эту проблему?

Спасибо.

Ответы [ 3 ]

0 голосов
/ 23 сентября 2018

Попробуйте это

$("#CustomerEnquiryForm").submit(function(e) {
    e.preventDefault();
    $.post("https://test.salesforce.com/servlet/servlet.WebToLead?encoding=UTF-8", $(this).serialize() , function(data, status) {
        console.log(data);
        console.log(status);
        var obj = JSON.parse(data);
        //Read the server response here
        // My redirection //
        if (window.location.href.indexOf("nodeId") > -1) {
            window.location = "/en/our-service/"
        } else {
            window.location = "/en/"
        }
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="CustomerEnquiryForm">
   <label for="first_name">First Name</label>
   <input id="first_name" required="required" name="first_name"  type="text" />
   <br>
   <label for="last_name">Last Name</label>
   <input id="last_name" required="required"  name="last_name"  type="text" />
   <br>
   <label for="company">Company</label>
   <input id="company" required="required"  name="company"  type="text" /><br>
   <label for="phone">Phone</label><input id="phone"  name="phone"  type="text" />
   <br>
   <label for="mobile">Mobile</label>
   <input id="mobile" required="required"  name="mobile"  type="text" />
   <br>
   <label for="email">Email</label>
   <input id="email" required="required"  name="email" type="text" /><br>
   <button type = "submit">Submit</button>
</form>
0 голосов
/ 23 сентября 2018

Вы можете использовать jQuery для отправки формы через AJAX.С его помощью вместо отправки страницы и перенаправления на отправленный URL-адрес вы можете отправить данные в фоновом режиме, получить ответ и выполнить перенаправление соответственно.

$.ajax({
  type: "POST",
  url: url,  //url where you want to send the data
  data: data, //somehow bind the input data to the variables and pass it
  success: someFunction, //you will get the response from server in this function
  dataType: 'JSON'
});

Вы можете узнать больше об AJAX здесь

Другой вариант - отправить ответ по ссылке вашего домашнего URL, что-токак это

https://example.com/?red=somelink.com

, а затем перенаправить его со стороны клиента с помощью JavaScript.

0 голосов
/ 23 сентября 2018

Я мог предотвратить перенаправление сервера.и мое перенаправление работает ... но главная проблема ... форма больше не отправляет электронные письма.

вам нужно вручную отправить данные с помощью ajax.

https://developer.mozilla.org/en-US/docs/Web/API/FormData

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest

// 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
    }
}

или перенаправьте сервер, если вы управляете сервером.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...