Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript | ColdFusion-Facebook像素_Javascript_Coldfusion_Facebook Pixel - Fatal编程技术网

JavaScript | ColdFusion-Facebook像素

JavaScript | ColdFusion-Facebook像素,javascript,coldfusion,facebook-pixel,Javascript,Coldfusion,Facebook Pixel,我正试图触发我的Facebook像素 这就是问题所在: 我在客户端网站上安装了我自己的图像像素,当我的像素在客户端网站上被触发时,它会向我的服务器发送一个请求,在数据库中插入一些内容后,我会将请求重定向到CFML页面(HTML for ColdFusion),该页面包含来自Facebook的像素代码,如下所示: <script> // Facebok Pixel Init Code fbq('init', 'PIXEL_ID'); fbq

我正试图触发我的Facebook像素

这就是问题所在:

我在客户端网站上安装了我自己的图像像素,当我的像素在客户端网站上被触发时,它会向我的服务器发送一个请求,在数据库中插入一些内容后,我会将请求重定向到CFML页面(HTML for ColdFusion),该页面包含来自Facebook的像素代码,如下所示:

  <script>
       // Facebok Pixel Init Code
       fbq('init', 'PIXEL_ID');
       fbq('trackCustom', 'myCustomEvent', {});
  </script>
  <noscript>
      <img src="THE_FB_URL/?id=PIXEL_ID&ev=myCustomEvent&noscript=1">
  </noscript>

//Facebok像素初始化代码
fbq('init','PIXEL_ID');
fbq('trackCustom','myCustomEvent',{});
当我通过浏览器直接访问页面时,它会成功触发像素,我可以在Facebook像素报告中看到它。但是,当请求在插入数据库后重定向到页面时,像素不会触发

我认为这是因为JavaScript和HTML从未添加到DOM中,所以它从未被执行

你知道我怎样才能做到这一点吗

我想如果我向
标记URL发送一个HTTP GET请求,希望Facebook会接受它

更新

我发送的请求会触发事件,但@Jules是对的。我用这种方法找不到哪个广告导致了转换,问题是哪里把流量推到了我们客户的网站上,我们不能安装任何JavaScript代码

我试图检查Facebook存储了哪些cookies,因此当我发出GET请求时,我也会发送这些值,但这种情况会发生:

1-广告将用户发送到如下链接:

l.facebook.com/l.php?u=redirect\u url&h=some\u token\u此处

在这个页面中,我可以检查是否有一些cookie(我假设Facebook需要这些值来查找导致转换的广告)

2-然后用户被重定向到我们的客户表单页面

我也试着检查这里的饼干,但是饼干似乎不存在


我需要帮助

如果您使用的是
CFlocation
,则不会触发脚本。而是使用javascript重新定位。给浏览器足够的时间加载页面并启动脚本。大概是这样的:

<script>
    fbq('init', 'PIXEL_ID');
    fbq('trackCustom', 'myCustomEvent', {});
    setTimeout(
        function(){
            window.location.href='';
            // or simply: history.go(-1);
        },
        3000
    );
</script>
<noscript>
    <img src="THE_FB_URL/?id=PIXEL_ID&ev=myCustomEvent&noscript=1">
</noscript>

fbq('init','PIXEL_ID');
fbq('trackCustom','myCustomEvent',{});
设置超时(
函数(){
window.location.href='';
//或者简单地说:history.go(-1);
},
3000
);
所以伙计们

我是这样做的:

我没有使用
CFLOCATION
将请求重定向到Facebook JS片段所在的
CFML
页面,而是直接使用
CFHTTP
请求Facebook跟踪URL。像这样:

<cfif #source# eq 'facebook'>
     <cfhttpparam type="url" name="id" value="PIXEL_ID">
     <cfhttpparam type="url" name="ev" value="myCustomEvent">
     <cfhttpparam type="url" name="noscript" value="1">
</cfif>


成功了!:)

根据您的评论,以下内容可能有效。您将利用
noscript
image标记。 我认为使用CFML返回的是一个正确的FB像素URL的CFLocation,而不是cfhttp加载它。这样,客户端仍然加载FB像素,而您仍然可以跟踪其间的加载情况

浏览器将加载

<img src="//your-server.net/trackPixel.cfm?some_vars=some_vals">

CFML确实

<!--- DO YOUR STORAGE AND OTHER LOGIC --->
<cfquery>...</cfquery>

<!--- THEN REDIRECT --->
<cflocation url="the_official_fb_image_url.gif" addToken="no">

...

因此,当用户的浏览器将cfm作为图像加载时,答案是加载不同的图像。

您不应该编写HTML/Javascript代码

第一个转换像素是通过
img
标记调用的,因此您无法使用HTML/Javascript响应

你所要做的就是返回一个重定向(301)到你的最终图像像素。在这种情况下:

Redirect 301 THE_FB_URL/?id=PIXEL_ID&ev=myCustomEvent&noscript=1

最后一句话似乎值得尝试。谢谢,我让它与cfhttp一起工作,所以我不需要重定向到CFML页面。如果你使用cfhttp,你将在FB中丢失统计信息。最好让客户端浏览器运行FB跟踪机制,这样客户端的会话和Cookie就可以完成它们的工作。你是对的。我找不到使用这种方法导致转换的广告,问题是,在向客户端网站推送流量的地方,我们不能安装任何javascript代码。