当我重定向一个返回到显示该表单的页面的帖子时,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的形式,如果我刷新页面我得到的表单。
这是Sinatra中的代码,如果你不明白,在这一点上,我将重写它在Flask,Snap,Rails,Django(我的应用程序在Django)…但它应该是足够好阅读。这是Github上的代码(由于StackOverflow没有检测到我的红宝石):https://gist.github.com/1061639
要运行该应用程序,您基本上安装了sinatra: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="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" /> <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="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" /> <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 →"></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="http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.css" /> <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
解决方法
为您的thank_you页面指定数据网址。强制更改网页上的表单提交。
<div data-role="page" data-url="/thank_you">
我发现从Redirects and linking to directories下的文档的信息。
This also allows you to return urls that change as the result of a redirect,for example,you might post a form to “/login.html” but return a page from the url “/account” after a successful submission.