2014-11-13 91 views
0

我有一个简单的ajax()获取请求,应该添加优惠券,如果他们选择接受它(通过弹出一个标签)。但是,当我运行该页面并单击该标记并在控制台中查看它时,它所做的只是以HTML形式返回整个页面。我如何才能正确使用我通过路由指定的控制器?我对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

试试这个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

尝试改变:

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

到:

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

编辑- 根据您的回复

也改变你的StoreController你的方法ajaxAddCoupon返回一个字符串。即代替return true;变化,为return 'true';

+0

不起作用。我得到一个错误:{“error”:{“type”:“UnexpectedValueException”,“message”:“响应内容必须是实现__toString(),\”布尔\“给定的字符串或对象。 – Lynx

+0

如果我到了页面,它工作得很好。我还没有尝试过自动转储。 – Lynx

+0

然后在你的'StoreController'上改变你的方法'ajaxAddCoupon'来返回一个字符串。即代替'return true;'将其改为'return'true';' – Latheesan