Javascript 使用$.ajax post将数据从cakephp视图发送到控制器
我第一次在CakePhp2.4.5中使用了$.ajax——我读了很多关于stackoverflow的帖子,并在w3schools和jquery站点上做了其他研究,但不明白应该如何解决我的问题。 我想从我的第一个视图index.ctp向控制器发送数据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',
$.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您根据版本的请求。现在在我的手机上编写和修改你的代码有点困难,当我拿到我的电脑时,我会帮你更多。在谷歌搜索的时候