Задать вопрос
@potapovdmtriy

Почему не работает jQuery post?

$("#send").click(function(){
  $.post("test.php", { name: "John", time: "2pm" } );
   $(location).attr('href', '/test.php');
});


<?php
  // файл test.php
  echo $_POST['name'];
  echo $_POST['time'];
?>
  • Вопрос задан
  • 778 просмотров
Подписаться 1 Оценить 4 комментария
Решения вопроса 1
@HAbRAhabp
Как я понял, ТС хочет перейти на страницу /test.php с параметрами, что передает в ajax. Потом, с помощью css селектора jQuery выбирает location и меняет ему атрибут href :D

Правильнее будет создать форму и сделать ее сабмит. Вот так:
$("body").append("<form id=form_submit method=POST><input type=hidden value=John name=name><input type=hidden value=2pm name=time></form>");
$("#form_submit").submit();
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
supervaleha
@supervaleha
Web-development
POST не успевает отработать.
Все команды выполняются одна за одной, не ожидая выполнения предыдущей.

Если Вам нужно сделать редирект после успешного POST сделайте так:

$("#send").click(function(){
  $.post("test.php", { name: "John", time: "2pm" }, function(){
    $(location).attr('href', '/test.php');
  });
});


Так редирект выполнится только в случае успешного выполнения запроса.
Ответ написан
Комментировать
alsopub
@alsopub
Подозреваю что у вас POST не успевает отработать, так как сразу за ним идет непонятное $(location).attr('href', '/test.php');
То есть вы сместо POST просто переходите на страницу "/test.php".
Почитайте тему еще раз как делать post.
Ответ написан
Комментировать
coderisimo
@coderisimo Куратор тега JavaScript
Срабатывает ли вызов функции? Например , вот так :
$("#send").click(function(){
console.log('hi!');
  $.post("test.php", { name: "John", time: "2pm" } );
   $(location).attr('href', '/test.php');
});


'hi!' выводится в консоли?
если да, то в этой же консоли смотрите отправляется ли запрос. Если да, то что появляется в консоли после отправки запроса? В общем, консоль вам все покажет )))
Ответ написан
fabrykant
@fabrykant
$("#send").click(function(){
  $.post("test.php", { name: "John", time: "2pm" } ).done(function() {
    $(location).attr('href', '/test.php');
  });
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы