使用$ .ajax post将cakephp视图中的数据发送到控制器

时间:2014-10-10 18:46:57

标签: javascript php jquery ajax cakephp

我在CakePhp2.4.5中第一次使用$ .ajax-我在stackoverflow上阅读了很多帖子,并在w3schools和jquery网站上做过其他研究,但无法理解我应该如何解决我的问题。 我想从第一个视图index.ctp

向Controller发送数据
 $.ajax({
                type: 'POST',
                url: 'meers/client',
                datatype:'json',
                cache: false,
                data: {myVal:'Success!'},
                success: function(){alert('AjaX Success')},
                error: function(){alert('AjaX Failed')}
            })
                .done(function(){
                    alert('AjaX Done!');
                });

提醒节目' AjaX成功'。

在我的控制器中我有

public function client(){ if($this->request->isAjax()){ $this->set('ajaxTest','Success'); }}

在我的SECOND视图client.ctp中我有。

if(isset($ajaxTest)){ echo $ajaxTest; }else{ echo 'ajaxTest not Set.'; }

问题。我总是在我的Client.ctp视图中获得msg" ajaxTest not Set"。 我究竟做错了什么 ?或者怎么做?感谢

1 个答案:

答案 0 :(得分:2)

我认为您的问题在网址中,因为“meers / client'在一条路线

  $.ajax({
        type: 'POST',
        url: "<?php echo $this->Html->url(array('controller' => 'YourController','action' => 'YourAction')); ?>",
        datatype:'json',
        cache: false,
        data: {myVal:'Success!'},
        success: function(){alert('AjaX Success')},
        error: function(){alert('AjaX Failed')}
    })
        .done(function(){
            alert('AjaX Done!');
        });

或者可以探测给路由器:

  $.ajax({
        type: 'POST',
        url: "<?php echo Router::url(array('controller' => 'YourController', 'action' => 'YourAction'), true); ?>",
        datatype:'json',
        cache: false,
        data: {myVal:'Success!'},
        success: function(){alert('AjaX Success')},
        error: function(){alert('AjaX Failed')}
    })
        .done(function(){
            alert('AjaX Done!');
        });

你可以看到其他例子:

http://www.dereuromark.de/2014/01/09/ajax-and-cakephp/

Making jquery ajax call from view to controller in cakephp 2.x