2014-11-13 154 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