如何使用Cakephp调用Javascript函数

时间:2011-07-13 08:53:34

标签: javascript function cakephp

我的视图中有一个函数(aval_comp.ctp)。 当我在控制器上执行函数计算时,我想调用我的Javascript函数。

Js功能:

<script type="text/javascript">
    function calculateTotal(){
         var total = document.getElementById('valor1').innerHTML*1 + document.getElementById('valor2').innerHTML*1 + document.getElementById('valor3').innerHTML*1 + document.getElementById('valor4').innerHTML*1 + document.getElementById('valor5').innerHTML*1 + document.getElementById('valor6').innerHTML*1;
         document.getElementById('total').innerHTML = total;
     }
 </script>

如何在Controller中调用该功能?

3 个答案:

答案 0 :(得分:2)

好吧,talelcool不太正确。

你可以从php调用javascript函数但是非常气馁而不是你应该如何使用这些函数。 PHP是服务器,JS是客户端,永远不要混合两个!

无论如何,如果在php中你回应了这个:

<?php
echo "<script>calculateTotal()</script>";

?>

那应该有用。它并不完美,但是如果你把它放在.php页面的末尾就应该调用它。

它可能无法工作的原因是它可能会在浏览器有时间定义它之前尝试调用该函数。如果您有这个问题,请告诉我:)。

<强> BUT

如前所述,您应该在服务器上执行此操作。如果要在屏幕上使用刚刚输入的值,可以使用AJAX。我建议为此学习jQuery,因为它在很多其他方面也会帮助你。

答案 1 :(得分:1)

你不能,Javascript&amp; php没有在相同的上下文中执行, 看看服务器中的php执行,它有点编译你的代码&amp;提供一个html页面,发送到客户端(这里是浏览器)以及javascript&amp; css。 之后浏览器执行javascripts代码。

我建议你只需尝试在php上重写你的功能。使用循环方式For()。

似乎更简单

答案 2 :(得分:1)

CakePHP与ruby-on-rails有很多相似之处,但非常不幸的是,没有像在rails中那样通过控制器解决JS函数来解决xhr请求问题。但这是它对你有用的方式:

var $components = array('RequestHandler');
function async_fetch(){
   if($this->ResquestHandler->isAjax()) {
      $this->autoRender = false; // <-EDIT
      echo "<script type=\"text/javascript\">  function calculateTotal(){ var total = document.getElementById('valor1').innerHTML*1 + document.getElementById('valor2').innerHTML*1 + document.getElementById('valor3').innerHTML*1 + document.getElementById('valor4').innerHTML*1 + document.getElementById('valor5').innerHTML*1 + document.getElementById('valor6').innerHTML*1;document.getElementById('total').innerHTML = total;}</script>";
   }
}