Я использую jQuery 1.6.4 с jQuery Mobile 1.0.1. Я сталкиваюсь с проблемой каждый раз, когда вы ссылаетесь на страницу, которая затем пытается выполнить редирект 301.
Я настроил образец страницы по адресу: http://www.widgetsandburritos.com/jquery-mobile-test/
Единственное, что есть на этой странице, - это jQuery Mobile, включающий ссылку на другую страницу с перенаправлением 301 в другое место.
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
</head>
<body>
<a href="301test.php">301 test</a>
</body>
</html>
301test.php имеет следующее содержание:
<?php
header( "HTTP/1.1 301 Moved Permanently" );
header( "Location: 301success.html" );
?>
Для этого нужно просто передать браузер в 301success.html. Это работает, если вы перейдете по этому адресу
http://www.widgetsandburritos.com/jquery-mobile-test/301test.php
Но когда вы нажимаете на ссылку со страницы с помощью jQuery Mobile, вместо нее отображается «неопределенное». JQuery Mobile в настоящее время не может обрабатывать перенаправления?
Любые возможные способы обхода?
Спасибо за вашу помощь.
РЕДАКТИРОВАТЬ [23.03.12, 12:41 AM CST]
Я также разместил эту проблему на форумах jQuery Mobile . Кто-то там порекомендовал добавить rel = "external" к тегу привязки. Технически это работает, если все, что вы делаете - это создание ссылки, но не решит проблему, если вы попадете на перенаправление с помощью какого-либо другого механизма, такого как запрос POST.
Для иллюстрации я настроил вторичный тест на http://www.widgetsandburritos.com/jquery-mobile-test/test2.html
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.css" />
<script src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
<script src="http://code.jquery.com/mobile/1.0.1/jquery.mobile-1.0.1.min.js"></script>
</head>
<body>
<form method="post" action="301test.php">
<input type="submit" value="test" />
</form>
</body>
</html>
Вместо того, чтобы перейти на страницу перенаправления 301test.php по ссылке, теперь это местоположение формы, которую мы отправляем. Контекст, который будет использоваться, будет таким, что если вы отправите форму с ошибками, она останется на той же странице, что позволит вам исправить ошибки. Если не было ошибок, он перенаправляет вас на страницу успеха. Это сделано, чтобы избежать повторной отправки формы, если пользователь обновляет свой браузер. Он отлично работает в обычных веб-приложениях. Но в сочетании с jQuery Mobile это, похоже, не работает.
Просто подумал, что я бы дал дополнительный контекст кому-либо еще после этой проблемы.