Подтвердить что ты не робот

Ошибка при перенаправлении в JQuery Mobile

Когда я перенаправляю сообщение, возвращаясь к странице, на которой отображается форма, JQuery mobile показывает мне результаты вместо формы.

Предположим, у меня есть три ресурса:

/ => Just shows a link to the /redirect_to resource, this is to test
/redirect_to => GET: Shows a form to say your name in /thank_you
/redirect_to => POST: Just redirects to /thank_you showing the name that you input
/thank_you => GET: Shows a text "Thank you name!"

После того, как я доберусь до благодарности! Если я попытаюсь вернуться домой, а затем перейдите к /redirect_to, я получаю содержимое /thank_you вместо формы /redirect_to, если обновить страницу, я получаю форму.

Поэтому вместо того, чтобы смотреть на форму на redirect_to, я вижу страницу thank_you.

Вот код в Sinatra, если вы его не понимаете, на этом этапе я переписал его в Flask, Snap, Rails, Django (мое приложение находится на Django)... но он должен быть достаточно хорош, чтобы читать. Вот код на Github (поскольку StackOverflow не обнаруживает мой ruby): https://gist.github.com/1061639

Чтобы запустить приложение, вы в основном устанавливаете синатра: gem install sinatra

И запустите его: ./jquerymobile_redirect_error.rb

#!/usr/bin/env ruby

require 'rubygems'
require 'sinatra'

get '/' do
  <<-end_page
<!DOCTYPE html> 
<html> 
  <head> 
    <link rel="stylesheet" href="#" onclick="location.href='http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css'; return false;" />
    <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>
  </head>
  <body>
    <div data-role="page">
      <div data-role="header" data-position="fixed">
        <h1>JQuery Error</h1>
        <a href="/" data-icon="home">Home</a>
        <a href="/" data-icon="delete">Logout</a>
      </div><!-- /header -->

      <div data-role="content">
        <h1>Go to /redirect_to <a href="/redirect_to">here</a>.
      </div><!-- /content -->

      <div data-role="footer" data-position="fixed">
        <h1>Footer</h1>
      </div><!-- /footer -->
    </div><!-- /page -->
  </body>
</html>
  end_page
end

get '/redirect_to' do
  <<-end_page
<!DOCTYPE html> 
<html> 
  <head> 
    <link rel="stylesheet" href="#" onclick="location.href='http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css'; return false;" />
    <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>
  </head>
  <body>
    <div data-role="page">
      <div data-role="header" data-position="fixed">
        <h1>JQuery Error</h1>
        <a href="/" data-icon="home">Home</a>
        <a href="/" data-icon="delete">Logout</a>
      </div><!-- /header -->

      <div data-role="content">
        <form action="/redirect_to" method="post" accept-charset="utf-8">
          <p><label for="name">Name</label><input type="text" id="name" name="name" value="" id="name" placeholder="input your name">
          <p><input type="submit" value="Redirect to /thank_you &rarr;"></p>
        </form>
      </div><!-- /content -->

      <div data-role="footer" data-position="fixed">
        <h1>Footer</h1>
      </div><!-- /footer -->
    </div><!-- /page -->
  </body>
</html>
  end_page
end

post '/redirect_to' do
  redirect "/thank_you/#{params[:name]}"
end

get '/thank_you/:name' do |name|
  <<-end_page
<!DOCTYPE html> 
<html> 
  <head> 
    <link rel="stylesheet" href="#" onclick="location.href='http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css'; return false;" />
    <script src="http://code.jquery.com/jquery-1.6.1.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js"></script>
  </head>
  <body>
    <div data-role="page">
      <div data-role="header" data-position="fixed">
        <h1>JQuery Error</h1>
        <a href="/" data-icon="home">Home</a>
        <a href="/" data-icon="delete">Logout</a>
      </div><!-- /header -->

      <div data-role="content">
        <h1>Thanks #{name}!</h1>
      </div><!-- /content -->

      <div data-role="footer" data-position="fixed">
        <h1>Footer</h1>
      </div><!-- /footer -->
    </div><!-- /page -->
  </body>
</html>
  end_page
end
4b9b3361

Ответ 1

Укажите data-url для вашей страницы thank_you. Это заставляет сменить URL-адрес на форму submit.

<div data-role="page" data-url="/thank_you">

Я нашел эту информацию из документов под Перенаправлениями и ссылками на каталоги.

Это также позволяет вам возвращать URL-адреса, которые изменяются в результате перенаправления, например, вы можете отправить форму в "/login.html", но после успешной отправки вернуть страницу из URL-адреса/учетной записи.