2010-09-07 68 views
0

在我的网站上,我通过查询字符串将数据传递到页面。我想改变它,以便将数据作为POST参数传递。使用cfhttp发布数据

我以前的说法是这样的:

<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非常陌生,所以这对我来说很难。

回答

6

假设您希望服务器而不是客户端查看结果,则可以使用CFHTTP。正如Edward指出的那样,客户端永远不会看到交互,因为它只在服务器和(在你的例子中)本身之间(尽管你需要一个完全合格的URL,包括主机名或IP)。

在您的例子中,有几件事情错了:

  • 你需要
  • 您使用的URL变量,不能形成(formField)变量

这是一个完全合格的URL,有一点调整(具体URL)应该工作:

<cfhttp method="post" url="http://localhost/mypage.cfm"> 
    <cfhttpparam name="theID" type="formField" value="123"> 
</cfhttp> 

请记住,th e响应将返回到服务器,因此最终用户将永远不会看到mypage.cfm。该响应将返回到CFHTTP变量中的服务器(您可以使用“result”属性更改该响应)。

除非您没有mypage.cfm的控制权,否则编辑它以获取URL变量或使用structAppend()将URL变量复制到FORM作用域可能更容易。

+0

感谢您发布,这只是帮助我了 – 2012-08-16 19:05:00

0

CFLOCATION标签向浏览器发出重定向,告诉它转到不同的url。

CFHTTP通知CF服务器与另一台服务器建立http连接。

他们没有任何可比的操作。

如果你想从浏览器到服务器CF发布的数据,那么你需要使用HTML表单标签。

发表评论:

什么CFHTTP的作用是使从服务器到另一个服务器的HTTP连接。所以,你要做的是从你自己的服务器到你自己的服务器建立一个HTTP连接,除非你正在开发一个硬核SOA系统可能有点奇怪。

通常情况下,由于您已经在服务器上,所以您应该将两个页面上需要的功能编码为可重用组件(cfc甚至只是用户定义的函数),然后在两个页面中调用它。

但是,如果你真的做什么你问什么,那么,你已经把这里是正确的。

一个东西你需要改变的是URL必须是完全合格的(即myserver.mydomain.com/myapp/mypage.cfm)。您不能使用“相对”网址。

你不会看到任何的萤火,因为它从服务器去访问服务器,浏览器不是在所有参与。

+0

是否没有其他方式从CF触发POST?我真正需要做的就是用数据打这个页面,这只是数据不能在查询字符串中。 – Steven 2010-09-07 21:10:49

+0

从CF到什么?你明白Coldfusion是一种服务器端语言,在服务器上执行,而不是浏览器,对吧? – 2010-09-07 21:14:36

+0

我的意思是“in”CF.是的,我知道CF是一种服务器端语言。我只想将数据发布到其他页面。从我看到的,cfhttp应该这样做,但显然它不。 – Steven 2010-09-07 21:25:32

0

使用cfhttp仅适用于您的应用程序之外的其他位置。关于您的消息,您使用cfhttp将价值提交到相同的应用程序。

+0

您可以使用CFHttp访问由同一应用程序生成的页面。这很不寻常,而且效率也不高。 – 2010-09-08 12:45:14

+0

我提到的是使用cfhttp在同一个应用程序中也是奇数。 – ppshein 2010-09-08 13:23:38

1

如果您只是将数据从一个页面传递到另一个页面,则您的选项位于URL中,表单字段(可能是隐藏字段)中,cookie中或会话变量中。

一种方式做到这一点(这取决于你正在尝试做的)是(与应用程序中设置会话变量)

在page1.cfm

<cfset session.theid="123"> 
<cf_location url="page2.cfm"> 

然后page2.cfm

<cfoutput>theid=#session.theid#</cfoutput> 

但考虑在并发访问覆盖方面的多用户情况。