2013-09-06 2 views
0

Это убивает меня. Я использую JQuery 1.10.2 и Cakephp 2.2, и я хочу сделать GET из javascript. Это мой код:Cakephp и JQuery Ajax call

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 я ничего не получаю.

+0

try echo json_encode ($ fechas); Выход; вместо возврата – hex4

+0

@ hex4 Спасибо. Nop, это не работает. –

ответ

1

Используйте вид. Не возвращайте напрямую с контроллера. Вы можете:

  • Использование data views (с тортом> 2)
  • визуализации пустой взгляд в пустой макет

просмотрах данные подход очень хорошо, однако вам потребуется TODO некоторой настройки как описано в ссылке - 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')

+0

Спасибо, я попробую. –