Laravel没有归还控制器

时间:2014-11-13 18:12:00

标签: php jquery ajax laravel

我有一个简单的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');

2 个答案:

答案 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';