当用户访问我的网站时,每个页面上都有一个“登录”链接。单击此按钮会使用一些 JavaScript 来显示一个覆盖窗口,提示用户输入其凭据。输入这些凭据后,将对 Web 服务器进行 Ajax 调用以验证它们;如果它们有效,则会发回身份验证票证 cookie 并重新加载页面,以便显示页面上特定于经过身份验证的用户或(现在)当前登录用户的任何内容。
我正在通过脚本完成页面重新加载:
window.location.reload();
这对于通过 GET 请求(绝大多数)加载的页面非常有效,但有些页面使用回发表单。因此,如果用户转到这些页面之一,执行回发,然后选择登录,当 window.location.reload() 脚本运行时,他们会收到对话框提示,询问他们是否需要重新提交 POST 正文。
我想绕过这个问题,我可以告诉浏览器重新加载页面,所以我尝试了:
window.location.href = window.location.href;
但是浏览器没有对上述语句采取任何行动,我推测是因为它认为新 URL 与旧 URL 相同。如果我将以上内容更改为:
window.location.href = window.location.pathname;
它重新加载页面,但我丢失了所有查询字符串参数。
我当前的解决方法足够了,但不够漂亮 - 简而言之,我将查询字符串参数添加到当前 window.location.href 值,然后将其分配回 window.location .href 通过调用reloadPage("justLoggedIn"),其中reloadPage函数为:
function reloadPage(querystringTackon) {
var currentUrl = window.location.href;
if (querystringTackon != null && querystringTackon.length > 0 && currentUrl.indexOf(querystringTackon) < 0) {
if (currentUrl.indexOf("?") < 0)
currentUrl += "?" + querystringTackon;
else
currentUrl += "&" + querystringTackon;
}
window.location.href = currentUrl;
}
这有效,但它导致 URL 为 www.example.com/SomeFolder/SomePage.aspx?justLoggedIn,这看起来很俗气。
在 JavaScript 中有没有办法让它执行 GET 重新加载而不提示用户重新提交 POST 数据?我需要确保任何现有的查询字符串参数都不会丢失。
最佳答案
window.location.href = window.location.href;
不要问我为什么它有效..但它确实有效:)。
就像 js 引擎解释我想的逻辑的方式。
关于javascript - POST 后重新加载浏览器窗口而不提示用户重新发送 POST 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4869721/
鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende
是的,我知道最好使用webmock,但我想知道如何在RSpec中模拟此方法:defmethod_to_testurl=URI.parseurireq=Net::HTTP::Post.newurl.pathres=Net::HTTP.start(url.host,url.port)do|http|http.requestreq,foo:1endresend这是RSpec:let(:uri){'http://example.com'}specify'HTTPcall'dohttp=mock:httpNet::HTTP.stub!(:start).and_yieldhttphttp.shou
我知道您通常应该在Rails中使用新建/创建和编辑/更新之间的链接,但我有一个情况需要其他东西。无论如何我可以实现同样的连接吗?我有一个模型表单,我希望它发布数据(类似于新View如何发布到创建操作)。这是我的表格prohibitedthisjobfrombeingsaved: 最佳答案 使用:url选项。=form_for@job,:url=>company_path,:html=>{:method=>:post/:put} 关于ruby-on-rails-rails:Howtomak
我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我正在尝试在Ruby中制作一个cli应用程序,它接受一个给定的数组,然后将其显示为一个列表,我可以使用箭头键浏览它。我觉得我已经在Ruby中看到一个库已经这样做了,但我记不起它的名字了。我正在尝试对soundcloud2000中的代码进行逆向工程做类似的事情,但他的代码与SoundcloudAPI的使用紧密耦合。我知道cursesgem,我正在考虑更抽象的东西。广告有没有人见过可以做到这一点的库或一些概念证明的Ruby代码可以做到这一点? 最佳答案 我不知道这是否是您正在寻找的,但也许您可以使用我的想法。由于我没有关于您要完成的工作
我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru
我正在阅读SandiMetz的POODR,并且遇到了一个我不太了解的编码原则。这是代码:classBicycleattr_reader:size,:chain,:tire_sizedefinitialize(args={})@size=args[:size]||1@chain=args[:chain]||2@tire_size=args[:tire_size]||3post_initialize(args)endendclassMountainBike此代码将为其各自的属性输出1,2,3,4,5。我不明白的是查找方法。当一辆山地自行车被实例化时,因为它没有自己的initialize方法
我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案
rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送