/ / Надіслати форму з ajax, але переспрямувати на іншу сторінку - javascript, jquery, jquery-plugins

Надіслати форму з ajax, але переспрямувати на іншу сторінку - javascript, jquery, jquery-plugins

Що я повинен використовувати в html та jquery, якщо хочу, за допомогою форми, подати (a) виконати певний файл php (url-a); (b) перенаправлення на інший. (url-b)

На даний момент я реалізував плагін форми jquery. http://jquery.malsup.com/form/#getting-started

Подібно до цього:

крок а. включені сценарії jquery та форми плагінів;

крок b. у html, у вигляді елемента:

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

крок с. в js, всередині document ready:

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

Чи слід змінити одне з цих посилань на URL? припустимо, що url-a - це той, про який повинен піклуватися аякс, і я хочу перенаправити на url-b ..

Дякую!

Відповіді:

3 для відповіді № 1
$("#form").ajaxForm(function() {
$.post("url-a.php", {a: a, b: b});
window.location.href="/url-b.php";
});

1 для відповіді № 2

якщо ви хочете, щоб сторінка була перенаправлена, то чому ви хочете її надіслати ajaxly будь-як, як у обробці успіху ви можете перенаправити на сторінку

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

0 для відповіді № 3

у функції "завершеності" $.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-ї сторінки