在 ColdFusion 中显示和/或使用无效的表单字段,如果您只是尝试用磅符号包装它们

Posted

技术标签:

【中文标题】在 ColdFusion 中显示和/或使用无效的表单字段,如果您只是尝试用磅符号包装它们【英文标题】:Display and or use form fields in ColdFusion that are invalid if you just try and wrap them with pound signs 【发布时间】:2017-12-03 20:31:07 【问题描述】:

我在 ajax 中将一个名为 trxdetails 的对象发布到 cfm 页面。

// onAuthorize() is called when the buyer approves the payment
            onAuthorize: function(data, actions) 
                return actions.payment.get()
                        // PayPal Info
                        .then( function (paypalinfo)  
                            console.log(paypalinfo)
                        )
                        // Execute Payment
                        .then(actions.payment.execute)
                        // Transaction Details
                        .then( function (trxdetails)  
                            console.log(trxdetails)


                            $.ajax(
                              url: 'PayPalExpress/ajax_trxdetails.cfm',
                              type: 'post',
                              data: trxdetails,
                              success: function(json) 
                                console.log(json)
                              
                            );

                        )
                        //.then(trxdetails => console.log(trxdetails));
            

当我 cfdump 表单时,我得到这些字段名称:

ID,INTENT,STATE,CART,PAYER[PAYMENT_METHOD],PAYER[STATUS],PAYER[PAYER_INFO][EMAIL],PAYER[PAYER_INFO][FIRST_NAME],PAYER[PAYER_INFO][MIDDLE_NAME],PAYER[PAYER_INFO][ LAST_NAME],PAYER[PAYER_INFO][PAYER_ID],PAYER[PAYER_INFO][COUNTRY_CODE],PAYER[PAYER_INFO][SHIPPING_ADDRESS][RECIPIENT_NAME],PAYER[PAYER_INFO][SHIPPING_ADDRESS][LINE1],PAYER[PAYER_INFO][SHIPPING_ADDRESS][CITY ],PAYER[PAYER_INFO][SHIPPING_ADDRESS][STATE],PAYER[PAYER_INFO][SHIPPING_ADDRESS][POSTAL_CODE],PAYER[PAYER_INFO][SHIPPING_ADDRESS][COUNTRY_CODE],TRANSACTIONS[0][AMOUNT][TOTAL],TRANSACTIONS[0] [AMOUNT][CURRENCY],TRANSACTIONS[0][RELATED_RESOURCES][0][SALE][ID],TRANSACTIONS[0][RELATED_RESOURCES][0][SALE][STATE],TRANSACTIONS[0][RELATED_RESOURCES][0 ][SALE][PAYMENT_MODE],TRANSACTIONS[0][RELATED_RESOURCES][0][SALE][PROTECTION_ELIGIBILITY],TRANSACTIONS[0][RELATED_RESOURCES][0][SALE][PARENT_PAYMENT],TRANSACTIONS[0][RELATED_RESOURCES][ 0][SALE][AMOUNT][TOTAL],TRANSACTIONS[0][RELATED_RESOURCES][0][SALE][AMOUNT][CURRENCY],TRANSACTIONS[0] [RELATED_RESOURCES][0][SALE][TRANSACTION_FEE][VALUE],TRANSACTIONS[0][RELATED_RESOURCES][0][SALE][TRANSACTION_FEE][CURRENCY]

当我尝试输出其中之一时,例如:

<cfoutput>#FORM.PAYER[PAYER_INFO][EMAIL]#</cfoutput>

我收到此错误

元素 PAYER 在类 [Ljava.lang.String; 的 Java 对象中未定义。

【问题讨论】:

如果您简化表单字段名称,处理表单提交会更简单。 我无法控制他们从贝宝返回的这些字段名称 【参考方案1】:

由于您的表单变量名称类似于结构,因此您不应使用 . 表示法访问变量。当您使用 .变量将被视为

<cfoutput>#FORM.PAYER[PAYER_INFO][EMAIL]#</cfoutput>

PAYER 是表单结构中的一个键。

相反,您可以获得如下数据

<cfoutput>#FORM["PAYER[PAYER_INFO][EMAIL]"]#</cfoutput>

在这种情况下,coldfusion 会将 PAYER[PAYER_INFO][EMAIL] 视为表单结构中的键

【讨论】:

以上是关于在 ColdFusion 中显示和/或使用无效的表单字段,如果您只是尝试用磅符号包装它们的主要内容,如果未能解决你的问题,请参考以下文章

ColdFusion:无效的 XML 控制字符(十六进制)

简单的 ColdFusion 脚本在 IE 中有效,但在 Firefox 中无效?

ColdFusion CFFILE 重命名属性验证错误,属性源的值无效,即使文件存在且路径正确

试着在Notepad ++中找到ColdFusion的语法高亮显示

ColdFusion的加密问题

Coldfusion - 查询不区分大小写的数据库