JavaScript в контроллере CakePHP - PullRequest
       2

JavaScript в контроллере CakePHP

0 голосов
/ 02 сентября 2011

В моем представлении CakePHP я вызываю метод в контроллере, используя jQuery:

function placeSensors(nk) {
  $.ajax({
    type:'post', 
    url:'/myapp/maps/placeSensors/' + nk, 
    success: function(r) {
      if(r.status = 'ok') {
      }
    }
  });
}

JS в контроллере определяется с помощью ie.:

class MapsController extends AppController {
  var $name = 'Maps';
  var $helpers = array('Js');
  var $uses = array('Measurings', 'Maps');
  var $components = array('RequestHandler'); // added later, but still the same


function index( $id = null, $value = null ) {
$code = '';
?>
<script type="text/javascript">
  alert('Hello!');
</script>
<?php
return $code;
}

Итак, с помощью простого кода я не могу получить предупреждение в своей веб-форме. Очень простой код, который я использовал в каком-то другом проекте, и он работает там, и по какой-то причине он не работает на этом ...

Я действительно застрял с этим, не могли бы вы помочь мне .....

ОБНОВЛЕНИЕ: это ответ, который я получаю от Firebug:

<script type="text/javascript">
  alert('Hello!');
</script>

Ответы [ 3 ]

1 голос
/ 03 сентября 2011
function placeSensors(nk) {
 $.ajax({
   type:'post', 
    dataType:'json',
   url:'/myapp/maps/placeSensors/' + nk, 
   success: function(r) {
     if(r.status) {
          alert(r.code);
     }
   }
 });
}

       class MapsController extends AppController {
           var $name = 'Maps';
            var $helpers = array('Js');
              var $uses = array('Measurings', 'Maps');


        function index( $id = null, $value = null ) {


             }

        // update below code
      function placeSensors( ) {
                $nk = $_POST['nk'];
              echo json_encode(array(
            'status' => true,
            'code' => "code"                
            ));
       exit();  

             }
1 голос
/ 03 сентября 2011

Вы пытаетесь разместить код, который должен быть просмотрен (javascript) клиентом, внутри контроллера. Контроллер предназначен для бизнес-логики, которую клиент не видит.

Поместите свой javascript в файл javascript в каталоге / webroot / js /.

Для взаимодействия с ajax скажите вашим контроллерам использовать компонент RequestHandler , чтобы определить, что они вызываются ajax. Оттуда вы можете возвращать простые значения или возвращать представление json или xml.

Если это звучит сложно, пока не беспокойтесь об этом, просто начните так просто, как вам нужно, и медленно создавайте свое приложение.

0 голосов
/ 04 сентября 2011

Хорошо, я наконец решил это.

Все, что мне было нужно, это добавить одну форму и один текст или, что еще лучше, скрытый элемент в форме.

После этого все заработало.

Так что мой упомянутый код был в порядке, все, что мне было нужно, это одно текстовое поле ......... Надеюсь, что кто-нибудь может сказать мне, почему?

Спасибо за вашу помощь и поддержку.

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