Отправить форму с ajax, но перенаправить на другую страницу - PullRequest
3 голосов
/ 07 января 2012

Что я должен использовать в html и в jquery, если я хочу, чтобы после отправки формы (a) выполнялся определенный файл php (url-a);(б) перенаправить на другой. (url-b)

В настоящее время я реализовал плагин формы jquery.http://jquery.malsup.com/form/#getting-started

Примерно так:

шаг а.включены скрипты плагинов jquery и form;

шаг b.в html, в элементе формы:

      <form action="url-a.php">
          <!--form code inserted here including input elements, etc and submit-->
      </form>

шаг c.в js, внутри document ready:

      $('#form').ajaxForm(function() { 
           $.post("url-a.php", {a: a, b: b});
      }); 

Следует ли изменить одну из этих URL-ссылок?предположим, что url-a - это то, о чем должен заботиться ajax, и я хочу перенаправить на url-b ..

Спасибо!

Ответы [ 3 ]

3 голосов
/ 07 января 2012
$('#form').ajaxForm(function() { 
  $.post("url-a.php", {a: a, b: b});
  window.location.href="/url-b.php";
});
1 голос
/ 07 января 2012

если вы хотите, чтобы страница перенаправляла, то почему вы хотите, чтобы она отправляла ajaxly, как в обработчике успеха вы можете перенаправить на страницу

 $.post("url-a.php", {a: a, b: b},function(){
   window.location.href="/page/to/redirect.php";
 });
0 голосов
/ 07 января 2012

в «полной» функции $.post(..) вы должны изменить местоположение браузера.Вы не можете использовать перенаправление на стороне сервера с ajax.

 $.post("url-a.php", {a: a, b: b},function(){
      window.location.href="/url-b.php";
 });

Если вы хотите перенаправить до завершения ajax, это возможно, но сложно.Например, я не знаю, как это сделать в PHP.Дело в том, что если вы перенаправляете сразу (опять же это должно быть сделано через javascript), то запрос отменяется с клиента.И если запрос прерывается, сервер также прерывает его.Иногда можно запустить новый поток на сервере, который отделен от потока запроса, но если запрос будет прерван до того, как он полностью достигнет сервера, он все завершится неудачей.

В общем случае не следуетДелать это - это неправильный подход.Либо не перенаправляйте, либо не запускайте запрос ajax на предыдущей странице - запустите его, как только загрузится новая страница.

Обновление: я видел, что вам нужен запрос ajax для запуска в течение часа -этого не произойдет - время ожидания браузера истекло.После того, как вы подтвердите, что действительно необходим один час, отметьте для асинхронных задач php.Вы можете начать его с $(document).ready(function() {..}); 2-й страницы

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