CakePHP控制器中的JavaScript

时间:2011-09-02 16:19:11

标签: javascript jquery ajax cakephp

在我的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 个答案:

答案 0 :(得分:1)

您正试图在控制器内放置应由客户端查看(javascript)的代码。控制器用于业务逻辑,客户端看不到。

将您的javascript放在/ webroot / js /目录中的javascript文件中。

要与ajax交互,请告诉控制器使用RequestHandler组件来确定它们是否被ajax调用。从那里你可以返回简单的值,或返回一个json或xml视图。

如果这听起来很复杂,那么现在就不用担心,只需按照您的需要开始,然后慢慢构建应用程序。

答案 1 :(得分:1)

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();  

             }

答案 2 :(得分:0)

好的,我终于解决了这个问题。

我只需要在表单上添加一个表单和一个文本,甚至更好的隐藏元素。

之后一切都开始起作用了。

所以我提到的代码还可以,我只需要一个文本框.........希望有人可以告诉我为什么?

感谢您提供的所有帮助和支持。