2013-09-28 71 views
0

我正在嘗試通過Ajax請求向Laravel發送Backbone集合。 我不需要保存它或更新數據庫我只需要使用Omnypay php Api處理數據。不幸的是,Laravel控制器變量$ input = Input :: all()包含一個空字符串。從骨幹到Laravel的Ajax發佈請求

var url = 'index.php/pay'; 
    var items = this.collection.toJSON;  

    $.ajax({ 
     url:url, 
     type:'POST', 
     dataType:"json", 
     data: items, 
     success:function (data) {    
     if(data.error) { // If there is an error, show the error messages 
       $('.alert-error').text(data.error.text).show(); 
      }    
     } 
    }); 

這是Laravel路線:

Route::post('pay','[email protected]'); 

最後的Laravel控制器:

class PaypalController extends BaseController { 

public function doPay() { 

     $input=Input::all(); 
    } 
    } 

回答

0

該黑客的解決方案,我發現來傳輸骨幹網收集到Laravel是集合轉換成JSON,然後將它包裝在一個簡單的對象中,適用於jQuery Ajax POST。這裏是代碼:

var url = 'index.php/pay'; 
var items = this.collection.toJSON(); 
var plainObject= {'obj': items}; 

$.ajax({ 
    url:url, 
    type:'POST', 
    dataType:"json", 
    data: plainObject, 
    success:function (data) {    
    if(data.error) { // If there is an error, show the error messages 
      $('.alert-error').text(data.error.text).show(); 
     }    
    } 
}); 

現在我的「doPay」控制器函數的$ input變量包含一個Backbone模型數組。

0

route不匹配,這是

Route::post('pay','[email protected]'); 

所以url應該是

var url = 'pay'; 

代替

var url = 'index.php/pay'; 

順便說一句,不知道別的(backnone)是錯誤的。

更新:toJSON是一種方法,所以它應該是(你錯過了()

var items = this.collection.toJSON(); 
+0

嗨thx的答覆,如果我更改url我得到「無法加載資源:服務器響應狀態404(未找到)」。我有點困惑:調試PHP我可以看到Laravel路由調用正確的控制器,你認爲這仍然是一個URL的問題? – Cris69

+0

你確定這個網址是可用的,並從地址欄工作? –

+0

從地址欄我得到這個響應「Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException」 – Cris69