在 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 脚本在 IE 中有效,但在 Firefox 中无效?
ColdFusion CFFILE 重命名属性验证错误,属性源的值无效,即使文件存在且路径正确