草庐IT

go - 由于没有 HTTP 重定向,执行模板提交问题?

coder 2023-06-30 原文

我正在尝试使用 go 将数据从一个页面传递到另一个页面。 这是我正在做的事情的简化版本:

//Attempting to go from page1.gohtml to page2.gohtml to page3.gohtml.

type myData stuct {
    data1 string
    data2 string
}

func page1(w http.ResposneWriter, r *http.Request) {
    if r.Method != http.MethodPost {
        myTemplate.ExecuteTemplate(w, "page1.gohtml", my_data) //do current page
    }

   //populated myData

    myTemplate.ExecuteTemplate(w, "page2.gohtml", my_data) //go to next page
}

//My .gohtml forms are like so:
<form id="page1" name="page1" method="post">
    <input type="submit" class="click">
</form>

重复第 2 页到第 3 页的通用代码。

问题陈述:当我执行从第 1 页到第 2 页的模板时,我的数据结构仍然填充,但是页面仍然位于 localhost:80/page1

尽管显示第 2 页,但它不会移动到第 2 页。

这不是问题,直到我去执行第 2 页上的提交。 这使我回到第 1 页,而不是第 3 页。

我已尝试设置我的表单,并采取将我带到下一页的操作。 这会重定向我,但不会给我带来我需要的填充数据结构。

将提交设置为返回 false 会停止执行我的服务器代码。

执行 HTTP 重定向会将我带到下一页,但与表单操作有相同的问题。

这是我不想保存到数据库的临时数据。

有人可以帮助指导我的选择吗?

最佳答案

在我看来,您没有重定向,您只是执行 page2 模板。

对于重定向,尝试:

http.Redirect(w, r, "http://127.0.0.1/page2", 301)

代替

myTemplate.ExecuteTemplate(w, "page2.gohtml", my_data) //go to next page

编辑:

我现在明白我没有完全回答你的问题,因为我忽略了 my_data(顺便说一句,在 golang 中,命名是驼峰式,所以你应该用 myDate 重命名它... :).

无论如何,对于传递数据,因为它只是字符串,你可以尝试将其序列化并将其添加到请求正文中(我不知道这是否是最佳实践,这只是我脑海中浮现的第一件事这可能会奏效)

关于go - 由于没有 HTTP 重定向,执行模板提交问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53694748/

有关go - 由于没有 HTTP 重定向,执行模板提交问题?的更多相关文章

  1. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  2. ruby-openid:执行发现时未设置@socket - 2

    我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass

  3. ruby - 难道Lua没有和Ruby的method_missing相媲美的东西吗? - 2

    我好像记得Lua有类似Ruby的method_missing的东西。还是我记错了? 最佳答案 表的metatable的__index和__newindex可以用于与Ruby的method_missing相同的效果。 关于ruby-难道Lua没有和Ruby的method_missing相媲美的东西吗?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/7732154/

  4. ruby-on-rails - rails 目前在重启后没有安装 - 2

    我有一个奇怪的问题:我在rvm上安装了ruby​​onrails。一切正常,我可以创建项目。但是在我输入“railsnew”时重新启动后,我有“程序'rails'当前未安装。”。SystemUbuntu12.04ruby-v"1.9.3p194"gemlistactionmailer(3.2.5)actionpack(3.2.5)activemodel(3.2.5)activerecord(3.2.5)activeresource(3.2.5)activesupport(3.2.5)arel(3.0.2)builder(3.0.0)bundler(1.1.4)coffee-rails(

  5. ruby - 通过 erb 模板输出 ruby​​ 数组 - 2

    我正在使用puppet为ruby​​程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby​​不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这

  6. ruby - 如何模拟 Net::HTTP::Post? - 2

    是的,我知道最好使用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

  7. ruby - 在没有 sass 引擎的情况下使用 sass 颜色函数 - 2

    我想在一个没有Sass引擎的类中使用Sass颜色函数。我已经在项目中使用了sassgem,所以我认为搭载会像以下一样简单:classRectangleincludeSass::Script::FunctionsdefcolorSass::Script::Color.new([0x82,0x39,0x06])enddefrender#hamlengineexecutedwithcontextofself#sothatwithintemlateicouldcall#%stop{offset:'0%',stop:{color:lighten(color)}}endend更新:参见上面的#re

  8. ruby - Chef 执行非顺序配方 - 2

    我遵循了教程http://gettingstartedwithchef.com/,第1章。我的运行list是"run_list":["recipe[apt]","recipe[phpap]"]我的phpapRecipe默认Recipeinclude_recipe"apache2"include_recipe"build-essential"include_recipe"openssl"include_recipe"mysql::client"include_recipe"mysql::server"include_recipe"php"include_recipe"php::modul

  9. ruby - 为什么 Ruby 的 each 迭代器先执行? - 2

    我在用Ruby执行简单任务时遇到了一件奇怪的事情。我只想用每个方法迭代字母表,但迭代在执行中先进行:alfawit=("a".."z")puts"That'sanalphabet:\n\n#{alfawit.each{|litera|putslitera}}"这段代码的结果是:(缩写)abc⋮xyzThat'sanalphabet:a..z知道为什么它会这样工作或者我做错了什么吗?提前致谢。 最佳答案 因为您的each调用被插入到在固定字符串之前执行的字符串文字中。此外,each返回一个Enumerable,实际上您甚至打印它。试试

  10. 没有类的 Ruby 方法? - 2

    大家好!我想知道Ruby中未使用语法ClassName.method_name调用的方法是如何工作的。我头脑中的一些是puts、print、gets、chomp。可以在不使用点运算符的情况下调用这些方法。为什么是这样?他们来自哪里?我怎样才能看到这些方法的完整列表? 最佳答案 Kernel中的所有方法都可用于Object类的所有对象或从Object派生的任何类。您可以使用Kernel.instance_methods列出它们。 关于没有类的Ruby方法?,我们在StackOverflow

随机推荐