【问题标题】:Cakephp and JQuery Ajax callCakephp 和 JQuery Ajax 调用
【发布时间】:2013-09-06 11:22:55
【问题描述】:

这可要了我的命。我正在使用 JQuery 1.10.2 和 Cakephp 2.2,我想从 javascript 做一个 GET。这是我的代码:

Javascript:

  var arg='/sites/fechas/10-02-2013';
  $.get(arg, function(data) {
     console.log(":" + data);
  }); 

CakePHP 代码(SitesController.php):

  public function fechas($fecha_reserva) {
     $this->autoRender = false;
     $fechas = $this->Informacion->find('count', array(
        'conditions' => array(
           'Informacion.fechas' => str_replace('-', '/', $fecha_reserva))
     ));
     return json_encode($fechas);
  }   

来自 chrome 开发者工具

Request URL:http://my.web.com/sites/fechas/10-02-2013
Request Headers view parsed
GET http://my.web.com/sites/fechas/10-02-2013 HTTP/1.1
Accept: */*
Referer: http://my.web.com/reserva
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)       Chrome/29.0.1547.62 Safari/537.36

如果我在浏览器中写入 url,我会得到响应(只是一个数字)。但是从 javascript 我什么也得不到。

【问题讨论】:

  • 试试 echo json_encode($fechas);出口;而不是返回
  • @hex4 谢谢。不,它不起作用。

标签: jquery cakephp-2.2


【解决方案1】:

使用视图。不要直接从 Controller 返回。 您可以:

  • 使用data views(来自蛋糕> 2)
  • 在空布局中渲染空视图

数据视图方法非常好,但是您需要按照链接中的说明进行一些设置 - parseExtensions,添加 RequestHandlerComponent 等。它比第二个选项更干净。检查文档并决定哪一个适合您。 第二个选项是“旧方法”。无论如何,如果你想通过第二种方式做到这一点,这就是你需要做的:

  • View/Layouts 下创建一个ajax.ctp 布局文件。随便叫什么都可以
  • 只有content_for_layout 显示在其中:<?php echo $content_for_layout; ?>
  • 创建视图:<?php echo json_encode($fechas);?>
  • 如果您没有获得正确的标题,请包含 RequestHandler 组件
  • 获取数据后在你的控制器中:

    $this->set('fetchas', $fechas);

    $this->render('your_view's_name_here')

【讨论】:

  • 谢谢,我去试试。
猜你喜欢
  • 2014-09-12
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多