我正在看activecampaign事件跟踪的示例
curl_setopt($curl, CURLOPT_URL, "https://trackcmp.net/event");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, array(
"actid" => "649587205",
"key" => "4a2f544b998d0107cd0341e799513c7eb94abde4",
"event" => "YOUR_EVENT",
"eventdata" => "ANY_DATA",
"visit" => json_encode(array(
// If you have an email address, assign it here.
"email" => "",
)),
));
我知道我可以使用以下CFHTTP调用
<cfhttp url="https://trackcmp.net/event" method="POST">
<cfhttpparam type="FORMFIELD" name="actid" value="649587205">
<cfhttpparam type="FORMFIELD" name="key" value="4a2f544b998d0107cd0341e799513c7eb94abde4">
<cfhttpparam type="FORMFIELD" name="event" value="Watched">
<cfhttpparam type="FORMFIELD" name="eventdata" value="Video 101 - how to...">
<cfhttpparam type="FORMFIELD" name="visit" value="">
但是我该如何处理“访问”呼叫
"visit" => json_encode(array(
// If you have an email address, assign it here.
"email" => "",
)),
我只是对如何将其转换为CF标签逻辑感到困惑。 谢谢。 马特
答案 0 :(得分:2)
最好从PHP manual开始,以了解这两个功能的作用。
array()
array()函数和array type的文档说明,在这种情况下,它创建了一个关联数组或CF结构。
PHP中的数组实际上是有序映射。地图是一种 将值与键相关。
json_encode()
顾名思义,json_encode()以JSON格式将关联数组对象编码为字符串。
CF代码
CF等效项是创建一个结构。然后使用serializeJSON()将其转换为字符串。使用结构文字语法,这非常相似
#serializeJSON( {"email":"abc@example.com"} )#
仅记得记住将键名括在引号中,以防止CF在序列化时将键名转换为大写。另外,PHP和CF之间的一大区别是,默认情况下,PHP结构是 ordered 。 CF结构不是。在这个简单的示例中,顺序无关紧要,但是在序列化时可以有所作为。如果需要需要有序结构,请参见以下主题:
"How to fix `remove default alphabetical ordering of SerializeJSON() `
答案 1 :(得分:1)
PHP在其Form字段中支持数组,而ColdFusion不支持。使用ColdFusion,PHP“数组”基本上是看起来像数组的字符串,因此您可以“伪造”数组。您的visit
表单字段如下所示:
<cfhttpparam type="FORMFIELD" name="visit[email]" value="">
<cfhttpparam type="FORMFIELD" name="visit[whatever]" value="">