如何使用PHP函数进行简单的JavaScript调用?

问题描述:

我有当表单提交正在被称为一个简单的PHP函数:如何使用PHP函数进行简单的JavaScript调用?

function uc_paypal_ec_submit_form($form, &$form_state) { 
    $form['actions'] = array('#type' => 'actions'); 
    $form['actions']['submit'] = array(
    '#type' => 'submit', 
    '#value' => t('Submit order'), 
); 
    return $form; 
} 

我需要的是能够做一个简单的谷歌Analytics(分析)这样调用:

_gaq.push(['_trackPageview', 'virtual/formSubmit']); 

我已经尝试了几个选项,但没有任何作用。我没有看到Google Analytics(分析)的呼叫...

我该如何解决这个问题?

+0

那些其他SO Q&A可能会帮助你:http://stackoverflow.com/questions/391306/javascript-function-from-php http://stackoverflow.com/questions/1045845/how-to-call -a-javascript-function-from-php – 2011-04-12 20:01:16

+1

Javascript在客户端执行,PHP在服务器上执行。Javascript不能直接调用PHP代码,而PHP只能生成Javascript代码,而不能执行它。 – 2011-04-12 20:02:04

您是否知道在服务器上运行PHP时,JavaScript在客户端浏览器中运行?

无论如何,现在你做。所以这应该回答你的问题。

只需回显<script type="text/javascript">yourJsCodeHere</script>"

+0

是的,谢谢,我知道... – Julien 2011-04-12 20:11:28

使你的函数返回输出并让输出结果在GOOGLE代码<script>中打印,将使_gaq.push...开火。

你不能只输出那个JS,并期望它自己在某个地方......或者让PHP打电话给Google。

  • PHP是服务器端
  • JS是

所以就像我说的,让JS输出到火灾的onload功能的客户端(从谷歌,不是你的服务器的客户端浏览器的请求)和你全都定了。 保存输出:$output = "_gaq.push(['_trackPageview', 'virtual/formSubmit']);";

然后在某处回显它以激发它。

+0

嘿Jakub,似乎很有希望,你会不会详细说明?因此,如果我使用与我的示例相同的函数,是否可以在函数的开头使用此行($ output =“_gaq.push(['_ trackPageview','virtual/formSubmit']);”;),然后“echo = $ output”结尾?非常感谢! – Julien 2011-04-12 20:21:16

+0

请在问题中发布您的问题,而不是在评论中,代码很难在这里阅读。 – Jakub 2011-04-12 20:22:40

你只需要从窗体的onSubmit参数中调用你的javascript代码。

<form name="..." action="..." onSubmit="_gaq.push(['_trackPageview', 'virtual/formSubmit']);"> 
+0

这不是一个好主意。首先,至少你会希望至少超时提交给GA一个执行它的机会。但更重要的是,这会带来误报。例如,用户提交和服务器端表单验证失败,并且用户被踢回。这样做会给用户一个错误的肯定(即使他们没有验证客户端)。 IOW它需要被触发*验证成功后才能准确 – 2011-04-12 20:07:53

你不行。 JavaScript是客户端,PHP是服务器端。

可以使浏览器调用JavaScript函数:

<?='<script type="text/javascript">jsfunc();<;/script>';?>; 
+0

小心使用短标签,我实际上会提醒他们,容易犯错误,并且默认情况下不支持。 – Jakub 2011-04-12 20:23:45

短期和简单的答案是,你不能执行JavaScript代码的服务器端。长期和艰难的答案是你可以,但它是漫长而艰难的,并涉及一些服务器端脚本/库,最好是有点混乱。

基本上,你想要做的是要么输出代码确认/谢谢你的网页用户登陆后(最佳),否则使用cURL来打一个(这是一个小技巧...基本上你必须模拟img请求,附加相关信息,包括cookie信息......注意,这不是上面提到的“长而坚硬”的方法)。

echo " <script type='text/javascript'>_gaq.push(['_trackPageview', 'virtual/formSubmit']); </script> ";