2015-11-27 3 views
0

меня этот вопрос, который я не могу решить ..форма onsubmit перенаправлять в результате чего форма не представляется

У меня есть форма, которая отправляет данные в Google листа.

<form action="https://docs.google.com/sheeturl" method="post" target="hidden_iframe1"> 

который прекрасно работает (но перенаправляет пользователя на страницу с благодарностями).

Я пытался предотвратить это поведение (я хочу, чтобы загрузить благодарственную страницу на моем собственном домене), и добавил следующее onsubmit события

onsubmit="window.location.href = 'http://thankyoupage.html';" 

, который сам по себе ничего не меняет. Поэтому я добавил

return false; 

Теперь редирект работает отлично (загрузка моих благодарственной страницы), однако данные формы не представлена ​​на лист.

Я уверен, что для этого есть банальное и простое решение, но у меня просто нет знаний для его решения. Спасибо.

+0

Мое предложение было бы, чтобы страница представить и закончить без перемещения, или переместить в самом конце сценария –

+0

Вы могли бы представить на ваш ThankYou-страницы, и использовать PHP и Google API для достижения того же. Таким образом, вы также можете проверить свои собственные данные. – Qirel

+0

@SamSwift 웃 что вы имеете в виду именно по сценарию? Не могли бы вы подробнее рассказать о своей идее? @ Qirel хм, разве это не слишком сложно и длительно? Вот отличный пример, где он работает именно так, как мне нужно 'http: // yaez.de/abo' Так что это должно быть возможно только с JS .. – MichalS

ответ

0

Установив возврат false, вы в основном захватили функциональность формы - это не публикация в Google вообще. Попробуйте отправить форму, используя AJAX. С JQuery это можно сделать так:

$("#ajaxForm").submit(function (e) { 
    e.preventDefault(); 
    $.ajax({ 
     url: "https://docs.google.com/forms/d/FORMKEY/formResponse", 
     beforeSend: function (xhr) { 
      xhr.setRequestHeader('Access-Control-Allow-Origin', 'chrome-extension://EXTENSION_ID'); 
      xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST, PUT'); 
     }, 
     data: JSON.stringify($(this).serializeArray()), 
     type: "POST", 
     dataType: "xml", 
     xhrFields: { 
      withCredentials: true 
     }, 
     statusCode: { 
      0: function() { 
       document.getElementById("message").innerHTML = "Your form has been submitted!"; 
       window.location.replace("http://thankyoupage.html"); 
      }, 
      200: function() { 
       document.getElementById("message").innerHTML = "Your form has been submitted!"; 
       console.log("Success"); 
       window.location.replace("ThankYou.html"); 
      } 
     } 
    }); 
}); 
+0

спасибо. В этом случае мне нужно также удалить цель из формы? До сих пор я добавлял ID ajaxForm в свой элемент формы и, конечно же, удалял действие и метод. Изменен URL-адрес функции, чтобы указать на лист google и отредактировать код замены. Но, похоже, это не работает. – MichalS

+0

Есть ли какие-либо ошибки js? Обратите внимание, что в URL-адресе моего примера ему нужна 'FORMKEY' для конкретной формы в google, которую вы пытаетесь ссылаться. Это может быть вопрос – Chizzle

+0

да, у меня есть ключ формы. Он просто открывает новую вкладку с длинной строкой всех данных поля формы. Также здесь некоторые ошибки jquery с консоли http://s23.postimg.org/9tyqmkmwb/Capture.png – MichalS

Смежные вопросы