2

我正在开发一个 Coldfusion 页面,该页面从表单中获取信息并将其发回同一页面。但是,我有一个 CFHTTP URL 字符串,我想将它发布到 PHP 页面,并且我也想在单独的页面中打开(仍然保持原始 POST 页面打开。我认为 CFHTTP 会接受“目标 - 空白”值但是不是。这是我的代码:

<cfhttp method="Post" url="https://www.foo.com/foocorp/restrict/fpdf/letter.php" result="adverseResponse">
            <cfhttpparam type="Header" name="Accept-Encoding" value="deflate;q=0"> 
            <cfhttpparam type="Header" name="TE" value="deflate;q=0">
                <cfoutput>

                <cfif isdefined( "b_firstname" )><cfhttpparam name="B_FIRSTNAME" type="formField" value="#B_FIRSTNAME#"></cfif>
                <cfif isdefined( "b_lastname" )><cfhttpparam name="B_LASTNAME" type="formField" value="#B_LASTNAME#"></cfif>
                <cfif isdefined( "prop_address" )><cfhttpparam name="PROP_ADDRESS" type="formField" value="#PROP_ADDRESS#"></cfif>
                <cfif isdefined( "prop_city" )><cfhttpparam name="PROP_CITY" type="formField" value="#PROP_CITY#"></cfif>
                <cfif isdefined( "prop_state" )><cfhttpparam name="PROP_STATE" type="formField" value="#PROP_STATE#"></cfif>
                <cfif isdefined( "prop_zip" )><cfhttpparam name="PROP_ZIP" type="formField" value="#PROP_ZIP#"></cfif>

                </cfoutput>
        </cfhttp>

我应该使用另一个 CF 元素来代替 CFHTTP 吗?

4

1 回答 1

7

这里有一些误解。CFHTTP进行服务器到服务器的通信。CF 中发生的任何事情都留在 CF 中(创造口号)。您所指的 target="_blank" 是在客户端上发生的事情- 在“浏览器”中打开了一个单独的“页面”。CFHTTP 不使用浏览器。它不呈现内容。它只是发出带有各种标头和参数的 HTTP 请求,然后将响应返回给您——所有这些都在您的 cf 代码中的服务器上。您必须对内容“做”一些事情才能将其发送回浏览器。

所以你需要做的是:

  • 从 CF (adverseResponse.filecontent) 获取响应并使用弹出窗口或其他方式将其放置在您的单独页面中。这样,您就充当了浏览器的“代理”。
  • 放弃 CFHTTP 路由和用户 jquery 或 Javascript 或任何暗示直接在浏览器中发布到 PHP 的行为。

希望这可以帮助。

于 2012-07-10T15:15:06.593 回答