JQuery пост, когда сделано - PullRequest
       10

JQuery пост, когда сделано

0 голосов
/ 08 октября 2009

У меня есть скрипт, который делает JQuery AJAX пост, а затем должен перенаправить на другую страницу Проблема в том, что он иногда перенаправляет до завершения публикации. Кажется, есть несколько решений, но я не могу заставить их работать. Спасибо за вашу помощь! Вот мой код:

$.post("cart.php", { 'products[]':postvalues }, function(data) { });
location.href="index.php";

Ответы [ 4 ]

5 голосов
/ 08 октября 2009

Вам нужно поместить location.href в функцию обратного вызова.

$.post("cart.php", { 'products[]':postvalues }, function(data, status) {
    // if you don't want to redirect if it doesn't work, you can check if status == 'success'
    location.href = "index.php";
});

Для получения дополнительной информации см. Документы jQuery.post .

Хотя, я должен спросить: если ты все равно собираешься перенаправить, зачем это делать через ajax?

Есть ли причина, по которой вы не хотите просто отправлять форму обычным способом? Если нет, то вам, вероятно, следует пойти по этому пути.

1 голос
/ 08 октября 2009

Ваша проблема в том, что изменение вашего местоположения не ожидает завершения действия публикации ... поскольку сообщение использует Ajax, оно передает управление на следующую строку после отправки запроса.

Чтобы это исправить, сделайте следующее:

$.post("cart.php", { 'products[]':postvalues }, function(data) {
// do stuff with data
location.href="index.php";
 });
1 голос
/ 08 октября 2009

При успешном перенаправлении в функцию обратного вызова:

$.post("cart.php", { 'products[]':postvalues }, function(data, textStatus) {
    if (textStatus == "success") {
        location.href="index.php";
    }
});

См. jQuery.post для других статусов для реализации дальнейшей обработки ошибок.

0 голосов
/ 19 января 2012

Если вы хотите перейти на ту же страницу, вы можете сделать window.location.reload (), если вы хотите злоупотреблять с JS, вы можете использовать load для одного div, только содержимое

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