[英]JavaScript in CakePHP's controller
在我的CakePHP视图中,我使用jQuery调用控制器中的方法:
function placeSensors(nk) {
$.ajax({
type:'post',
url:'/myapp/maps/placeSensors/' + nk,
success: function(r) {
if(r.status = 'ok') {
}
}
});
}
控制器中的JS定义为:
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>
您正试图在控制器内放置应由客户端查看(javascript)的代码。 控制器用于业务逻辑,客户端看不到。
将您的javascript放在/ webroot / js /目录中的javascript文件中。
要与ajax交互,请告诉控制器使用RequestHandler组件来确定它们是否被ajax调用。 从那里你可以返回简单的值,或返回一个json或xml视图。
如果这听起来很复杂,那么现在就不用担心它,只需要根据需要开始,然后慢慢构建应用程序。
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();
}
好的,我终于解决了这个问题。
我只需要在表单上添加一个表单和一个文本,甚至更好的隐藏元素。
之后一切都开始起作用了。
所以我提到的代码还可以,我只需要一个文本框.........希望有人可以告诉我为什么?
感谢您的所有帮助和支持。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.