在我的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>
答案 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)
好的,我终于解决了这个问题。
我只需要在表单上添加一个表单和一个文本,甚至更好的隐藏元素。
之后一切都开始起作用了。
所以我提到的代码还可以,我只需要一个文本框.........希望有人可以告诉我为什么?
感谢您提供的所有帮助和支持。