Запрос POST без формы с переходом

lospirata
На сайте с 24.12.2010
Offline
103
4750

День добрый. Сам запрос получилось реализовать, однако, нужно сделать так, чтобы в url менялся адрес страницы.

Есть a.php с кодом:

<html>

<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$('#go').click(function(){
$.ajax({
type: "POST",
url: "b.php",
data: { key1: 'value1' },
success: function(__html){
$('body').html(__html);
},
dataType: 'html'
});
return false;
});
});
</script>
</head>
<body>
<a href="b.php" id="go">Опа!</a>
</body>
</html>

Есть b.php с кодом:

<html>

<head>
</head>
<body>
<?php
echo $_POST['key1'];
?>
</body>
</html>

Все дело в том, что post запрос передается по ссылке, но в адресе остается a.php, а хотелось бы видеть b.php с таким же результатом. Спасибо.

It Can't Rain All the Time Блог вебмастера (https://lospirata.ru/)
ДП
На сайте с 23.11.2009
Offline
203
#1

Варианты:

1. Сделать скрытую форму (можно динамически с помощью того же jquery) и сабмитить её.

2. Использовать html5 history API - типа:


if (history && history.pushState){
history.pushState(null, null, 'b.php');
}

Ну и как бы хотелось услышать общую поставноку задачи, может есть не такие извращенные методы её решения, чем вы придумали.

lospirata
На сайте с 24.12.2010
Offline
103
#2

Смысл в том, чтобы обойтись без формы. Все работает и так, только без перехода. Как подправить скрипт js для решения задачи?

astraliens
На сайте с 25.09.2009
Offline
54
#3

только переходом, менять адрес в адресной строке напрямую браузер не позволит

пользуйуте window.location.href

ну или hash, но это не совсем в рамках задачи уже

ASTRALiENS - разработка сайтов (http://astraliens.net)
ДП
На сайте с 23.11.2009
Offline
203
#4
astraliens:
только переходом, менять адрес в адресной строке напрямую браузер не позволит

Таки некоторые (современные) позволяют, второй пункт моего поста посмотрите.

Единственная проблема в том, что пользователь реально не оказывается на это странице.

lospirata, если вам чисто урл страницы поменять - то опять же второй пункт для вас.

SD
На сайте с 20.07.2014
Offline
4
#5

Как вам уже советовал Дикий пионер,


$('body').html(__html);

Добавьте


$('body').html(__html);
if (history && history.pushState){
history.pushState(null, null, 'b.php');
}

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий