Как вызвать функцию Javascript, используя Cakephp - PullRequest
0 голосов
/ 13 июля 2011

У меня есть функция на мой взгляд (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>

Как мне вызвать эту функцию в контроллере?

Ответы [ 3 ]

2 голосов
/ 13 июля 2011

Что ж, talelcool не совсем прав.

Вы можете вызывать функции javascript из php, но это крайне нежелательно, и вам не следует использовать эти функции.PHP - сервер, JS - клиент, никогда не смешивайте два!

В любом случае, если в php вы видите следующее:

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

?>

Это должно работать.Он не идеален, но если вы поместите его в конец страницы .php, он должен вызвать его.

Причина, по которой она может не работать, состоит в том, что она МОЖЕТ попытаться вызвать функцию до того, как браузер успеет ее определить.Если у вас возникла эта проблема, дайте мне знать:)

НО

Как указано выше, вы должны сделать это на сервере.Если вы хотите использовать значения на экране, которые только что были введены, вы можете использовать AJAX.Я предлагаю изучить jQuery для этого, так как это поможет вам и во многих других областях.

1 голос
/ 13 июля 2011

CakePHP имеет много общего с ruby-on-rails, но очень жаль, что не существует достойного способа запуска функций JS через контроллер против запросов xhr в торт, как это происходит в rails.Но вот как это будет работать для вас:

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>";
   }
}
1 голос
/ 13 июля 2011

Вы не можете, Javascript и php не выполняются в одном контексте, смотрите php execute на сервере, он как бы компилирует ваш код и предоставляет html-страницу, которая отправляется клиенту (здесь браузеру) вместе с javascript & css. после этого браузер выполняет код javascripts.

Предлагаю просто переписать вашу функцию на php. кажется, что это делает общее, что проще сделать с помощью цикла lik For ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...