2014-11-13 7 views
0

У меня есть простой запрос ajax(), который должен добавить купон, если он захочет принять его (через всплывающее окно с тегом). Однако, когда я запускаю страницу, и я нажимаю на тег и смотрю на нее в консоли, все, что она делает, возвращает всю страницу в HTML. Как я могу заставить его правильно использовать контроллер, который я определяю по маршрутам? Я новичок в Ajax, поэтому я уверен, что в этом проблема. Итак, что должно произойти, клиент кликает на кнопку купон accept, ajax обрабатывает информацию с помощью контроллера, а затем показывает еще один способ, позволяющий им знать, что купон был успешно добавлен.Laravel не возвращает контроллер

Тег

<a href="#" class="btn btnDefault btnSmall" id="ajaxCoupon">Add coupon to cart and continue shopping <i class="fa fa-arrow-right"></i></a>

Ajax

 $('#ajaxCoupon').click(function(e){ 
      e.preventDefault(); 
      $.get('ajaxAddCoupon', function(data){ 
       $('#successCoupon').foundation('reveal', 'open'); 
      }); 
     }); 

контроллер & маршрут

public function ajaxAddCoupon() { 
     if(Request::ajax()) { 
     Session::put('coupon', 'search10'); 

     return true; 
    }; 
} 

Route::get('ajaxAddCoupon', '[email protected]'); 

ответ

1

Try этого HTML:

<a href="{{ URL::to('ajaxAddCoupon') }}" class="btn btnDefault btnSmall" id="ajaxCoupon">Add coupon to cart and continue shopping <i class="fa fa-arrow-right"></i></a> 

Javascript:

$('#ajaxCoupon').click(function(e){ 
    e.preventDefault(); 
    var url = $(this).attr('href'); 
    $.get(url, function(data) { 
     $('#successCoupon').foundation('reveal', 'open'); 
     console.log(data); // Log the data for testing 
    }); 
}); 

Кроме того, возвращает строку вместо булевого в вашей ajaxAddCoupon() функции. Надеюсь, это сработает.

+0

Похоже, что все! Благодаря! – Lynx

0

Try изменения:

$.get('ajaxAddCoupon', function(data){ 
    $('#successCoupon').foundation('reveal', 'open'); 
}); 

к:

$.get('/ajaxAddCoupon', function(data){ 
    $('#successCoupon').foundation('reveal', 'open'); 
}); 

Редактировать- на основе вашего ответа

изменить Кроме того ваш метод ajaxAddCoupon на вашем StoreController возвращает строку. т.е. вместо return true; изменений, что return 'true';

+0

Не работает. Я получаю сообщение об ошибке: {"error": {"type": "UnexpectedValueException", "message": "Содержимое ответа должно быть строкой или объектом, реализующим __toString(), \" boolean \ ". – Lynx

+0

Если я попал на страницу, он отлично работает. Я еще не пытался сбросить авто. – Lynx

+0

Затем измените свой метод 'ajaxAddCoupon' на свой' StoreController', чтобы вернуть строку. то есть вместо 'return true ', измените это на' return' true '; ' – Latheesan

Смежные вопросы