我试图通过后台任务执行一些 JS 代码。
我使用的网关与贝宝类似,即一旦获取付款详细信息,就会将响应发送回我服务器上的侦听器(这可能是立即的或几分钟后)
一旦侦听器 (listener.cfm) 收到响应,使用 cfhttp im 调用具有一些触发代码的文件 (runPixCode.cfm)。因为浏览器没有渲染 runPixCode.cfm,所以 JS 没有执行。
另外为了证明这是否有效,我让 JS 调用另一个文件(provethisis called.cfm),该文件将日志写入 txt 文件。
如果我在 cfhttp 调用之后直接输入以下内容,我可以在日志文件中看到一个条目。这向我保证,提供浏览器呈现的 JS 没有问题。
<cfoutput>#cfhttp.FileContent#</cfoutput><cfabort>
但是,不适用于后台任务。我不知道如何处理这个,任何建议表示赞赏。
监听器.cfm
--Does a bunch of logic--
<cfif paymentsuccessful>
<CFHTTP URL="www.mysite.com/runPixCode.cfm" METHOD="post" timeout="12" resolveurl="true">
<CFHTTPPARAM NAME="TrackingId" VALUE="#trackingId#" TYPE="FormField">
</CFHTTP>
</cfif>
运行PixCode.cfm
<SCRIPT language="JavaScript">
var axel = Math.random()+"";
var a = axel * 1000;
document.write('<IFRAME SRC="http://www.mysite.com/provethisiscalled.cfm?codearea=landing&num='+ a + '?" WIDTH=1 HEIGHT=1 FRAMEBORDER=0></IFRAME>');
</SCRIPT>
<NOSCRIPT><IFRAME SRC="http://www.mysite.com/provethisiscalled.cfm?codearea=landing&num=1" WIDTH=1 HEIGHT=1 FRAMEBORDER=0></IFRAME> </NOSCRIPT>
证明thisis called.cfm
<cfloop collection=#ARGUMENTS.triggerParams# item="key">
<cfset docLogging = docLogging & chr(13) & "#key# = " & ARGUMENTS.triggerParams[key]>
</cfloop>
<cffile action="append" file="c:\serverlocation\someDir\triggerlog.txt" output="#docLogging#" addnewline="YES" >