Я просмотрел сайт для получения ответов на этот вопрос, но ничто не говорит о том, что мне нужно (это близко, за исключением того, что он фактически не представляет форму: Предотвратить перенаправление формы или обновить при отправке? ).
Я пытаюсь включить регистрацию списка рассылки (код, заимствованный со страницы регистрации, размещенной на ReverbNation), на веб-сайт.
Форма отправляется правильно, но подписчик перенаправляется на страницу с отвратительной визуализацией на сайте ReverbNation. Я не могу изменить их сценарий и не думаю, что есть API, который я могу использовать, чтобы держать вещи в порядке.
Есть ли способ, которым я могу отправить форму в фоновом режиме, без перенаправления пользователя?
Вот пример в PHP для туннелирования POST.
//set POST variables $url = 'http://domain.com/url-to-post-to'; $fields = array( // Add the fields you want to pass through // Remove stripslashes if get_magic_quotes_gpc() returns 0. 'last_name'=>urlencode(stripslashes($_POST['last_name'])), 'first_name'=>urlencode(stripslashes($_POST['first_name'])), 'email'=>urlencode(stripslashes($_POST['email'])) ); //url-ify the data for the POST foreach($fields as $key=>$value) { $fields_string .= $key.'='.$value.'&'; } rtrim($fields_string,'&'); //open connection $ch = curl_init(); //set the url, number of POST vars, POST data curl_setopt($ch,CURLOPT_URL,$url); curl_setopt($ch,CURLOPT_POST,count($fields)); // returns the response as a string instead of printing it curl_setopt($handle, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch,CURLOPT_POSTFIELDS,$fields_string); //execute post $result = curl_exec($ch); //close connection curl_close($ch); echo $result;
Если вы отправляете сообщения в один домен, вы можете использовать пост AJAX. Однако, похоже, вы пытаетесь отправить POST в другой домен, поэтому одна и та же политика происхождения браузера помешает вам сделать это (http://en.wikipedia.org/wiki/Same_origin_policy). (JSONP может обойти это, но он не работает для POST)
Другой способ обойти это, чтобы ваш сервер выполнял POST и туннелировал ответ на вашу страницу.
<form id='yourForm' action="" onsubmit="javascript: doPostToTunnelPage(); return false;"> <!-- inputs...--> </form>
Обязательно верните false или ваша страница будет перенаправлена.
в моем понимании, вам нужно отправить форму без перенаправления?
рассмотрим мой пример
$(function() { $('#myForm').submit(function (e) { e.preventDefault(); $.ajax({ /* params to send the form */ }); return false; }); });
IIT будет работать только из-за e.preventDefault.
If this method is called, the default action of the event will not be triggered.
Дополнительную информацию см. В документации по jQuery.
Надеюсь, это поможет вам