0

这是要了我的命。我正在使用 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我什么也没得到。

4

1 回答 1

1

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

  • 使用数据视图(来自 cake > 2)
  • 在空布局中渲染空视图

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

  • 在. ajax.ctp_ View/Layouts可以随便叫什么
  • 里面只有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')

于 2013-09-09T12:41:46.520 回答