我有一个简单的ajax()获取请求,如果他们选择接受它,则应该添加优惠券(通过带有标签的弹出窗口)。但是,当我运行页面并单击a标签并在控制台中查看它时,它所做的就是以HTML格式返回整个页面。如何才能正确使用我通过路由指定的控制器?我是Ajax的新手,所以我确信问题出在哪里。所以应该发生的是客户点击接受优惠券按钮,ajax会使用控制器处理信息,然后显示另一个模式,让他们知道优惠券已成功添加。
标记
<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');
});
});
控制器&amp;路线
public function ajaxAddCoupon() {
if(Request::ajax()) {
Session::put('coupon', 'search10');
return true;
};
}
Route::get('ajaxAddCoupon', 'StoreController@ajaxAddCoupon');
答案 0 :(得分:1)
试试这个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()
函数中返回字符串而不是布尔值。我希望这有效。
答案 1 :(得分:0)
尝试更改:
$.get('ajaxAddCoupon', function(data){
$('#successCoupon').foundation('reveal', 'open');
});
为:
$.get('/ajaxAddCoupon', function(data){
$('#successCoupon').foundation('reveal', 'open');
});
修改 - 根据您的回复
同时更改ajaxAddCoupon
上的方法StoreController
以返回字符串。即代替return true;
将其更改为return 'true';