Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/404.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用$.ajax post将数据从cakephp视图发送到控制器_Javascript_Php_Jquery_Ajax_Cakephp - Fatal编程技术网

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

Javascript 使用$.ajax post将数据从cakephp视图发送到控制器,javascript,php,jquery,ajax,cakephp,Javascript,Php,Jquery,Ajax,Cakephp,我第一次在CakePhp2.4.5中使用了$.ajax——我读了很多关于stackoverflow的帖子,并在w3schools和jquery站点上做了其他研究,但不明白应该如何解决我的问题。 我想从我的第一个视图index.ctp向控制器发送数据 $.ajax({ type: 'POST', url: 'meers/client', datatype:'json',

我第一次在CakePhp2.4.5中使用了$.ajax——我读了很多关于stackoverflow的帖子,并在w3schools和jquery站点上做了其他研究,但不明白应该如何解决我的问题。 我想从我的第一个视图index.ctp向控制器发送数据

 $.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成功”

我的控制器里有

公共功能客户端(){
如果($this->request->isAjax()){
$this->set('ajaxTest','Success');
}}

在我的第二个视图client.ctp中,我有

if(isset($ajaxTest)){
echo$ajaxTest;
}否则{
回显“未设置ajaxTest”;
}

问题。我总是在Client.ctp视图“ajaxTest not Set”中获得消息。
我做错了什么?或者怎么做?谢谢

我想你的问题出在url上,因为“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({
键入:“POST”,
url:“”,
数据类型:'json',
cache:false,
数据:{myVal:'Success!'},
成功:函数(){alert('AjaX success')},
错误:函数(){alert('AjaX失败')}
})
.done(函数(){
警报('ajaxdone!');
});
或者可以通过路由器:

  $.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!');
        });
$.ajax({
键入:“POST”,
url:“”,
数据类型:'json',
cache:false,
数据:{myVal:'Success!'},
成功:函数(){alert('AjaX success')},
错误:函数(){alert('AjaX失败')}
})
.done(函数(){
警报('ajaxdone!');
});
您可以看到其他示例:


您是如何获得此“ajaxTest未设置”的?通过firebug或使用直接url?您可以在my View client.ctp中看到,如果设置了$ajaxTest,我有一个if语句。我不是CakePHP开发人员,但您不应该使用
is('ajax')
而不是
isAjax
?它似乎被弃用了。请注意,JavaScript是区分大小写的,
datatype
属性应该是
datatype
@undefined,即使我删除了这个isAjax东西,它应该工作吗?没有。我从未在控制器中获取数据,我尝试了许多不同的方法。我删除了这个if语句,并像这样放$此->设置('ajaxTest',$this->request->myVal);从不将值传递给我发送到客户端视图的ajaxTest变量。如果“警报显示‘AjaX成功’”,那么您如何知道请求的响应文本?这是否意味着您会看到
“ajaxTest未设置”。
对于非ajax请求,或者您在浏览器控制台中调试请求?@#Widrogo感谢您的回复,但如果我给这个函数一个错误的路由,它应该会给出一个错误,就像我尝试给错误的url一样。但是在我的代码中,AjaX返回了一个成功。怎么办?我使用了你的URL版本,但它在控制台中给了我这个错误未捕获语法错误:意外标记非法,我发现Html Helper现在在URL/MyAppName/meers/client中包含了我的根应用程序名,我认为它是不可访问的;对于do,请求取决于cake的版本。1.3.x:$this->ResquestHandler->isAjax();2.x$this->request->is('ajax');我在帖子中提到了我的cakephp版本,它是2.4.5,那么URL呢?我应该保持现状吗?我将检查debug和->is('ajax')。顺便问一下,如果我留下if语句来检查它是否是ajax呢?我希望首先看到控制器中的数据来自ajax post。在代码中,您需要看到1 url 2您根据版本的请求。现在在我的手机上编写和修改你的代码有点困难,当我拿到我的电脑时,我会帮你更多。在谷歌搜索的时候