在我的网站上,我将数据通过查询字符串传递到页面。我想改变它,以便将数据作为POST参数传递。
我之前的陈述看起来像这样:
<cf_location url="mypage.cfm?id=123">
我将其替换为:
<cfhttp method="post" url="mypage.cfm">
<cfhttpparam name="theID" type="URL" value="123">
</cfhttp>
但cfhttp没有发布任何内容。在Firebug中,NET选项卡中没有任何内容显示,并且该代码应该运行时没有任何反应。
我做错了吗?我在cfhttpparam中使用了正确的类型吗?我对ColdFusion很新,所以这对我来说很难。
答案 0 :(得分:7)
假设您希望服务器而不是客户端看到结果,您可以使用CFHTTP。正如Edward指出的那样,客户端永远不会看到交互,因为它只在服务器和(在您的示例中)本身之间(尽管您需要一个完全限定的URL,包括主机名或IP)。
在你的例子中,有一些错误:
通过一些调整(特别是URL),这应该有效:
<cfhttp method="post" url="http://localhost/mypage.cfm">
<cfhttpparam name="theID" type="formField" value="123">
</cfhttp>
请记住,响应将返回到服务器,因此最终用户永远不会看到mypage.cfm。响应将在CFHTTP变量中返回给服务器(您可以使用“result”属性更改它。)
除非您无法控制mypage.cfm,否则编辑它以获取URL变量或使用structAppend()将URL变量复制到FORM范围可能更容易。
答案 1 :(得分:1)
如果您只是将数据从一个页面传递到另一个页面,则您的选项位于URL,表单字段(可能是隐藏字段),Cookie中或通过会话变量。
执行此操作的一种方法(取决于您要执行的操作)是(在应用程序中设置会话变量)
page1.cfm中的
<cfset session.theid="123">
<cf_location url="page2.cfm">
然后在page2.cfm
<cfoutput>theid=#session.theid#</cfoutput>
但考虑到具有并发访问权限的覆盖方面的多用户情况。
答案 2 :(得分:0)
CFLOCATION标记向浏览器发出重定向,告诉它转到其他网址。
CFHTTP告诉CF SERVER与另一台服务器建立http连接。
他们没有任何可比较的操作。
如果您尝试将数据从浏览器发布到CF服务器,则需要使用HTML FORM标记。
发表评论:
CFHTTP所做的是建立从服务器到另一台服务器的http连接。所以,你要做的是从你自己的服务器到你自己的服务器进行HTTP连接,除非你正在开发一个核心SOA系统,否则可能有点奇怪。
通常,由于您已经在服务器上,您应该做的是将两个页面上所需的功能编码为可重用的组件(cfc或甚至只是用户定义的函数),然后调用这两页都有。
但是,如果你真的做了你要做的事情,那么你在这里放的是正确的。
您需要更改的一件事是URL需要完全限定(即myserver.mydomain.com/myapp/mypage.cfm)。你不能使用'亲戚'网址。
你不会在firebug中看到任何东西,因为它从SERVER进入SERVER,而浏览器根本没有参与。
答案 3 :(得分:0)
使用cfhttp
仅适用于您的应用程序之外的其他位置。关于您的消息,您可以使用cfhttp
将值提交到同一个应用程序中。