0

我正在尝试使用 Ajax 请求将 Backbone 集合发送到 Laravel。我不需要保存它或更新数据库我只需要使用 Omnypay php Api 处理数据。不幸的是,Laravel 控制器变量 $input=Input::all() 包含一个空字符串。

    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','PaypalController@doPay');

最后是 Laravel 控制器:

class PaypalController extends BaseController {

public function doPay() {

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

2 回答 2

0

你的route不匹配,是

Route::post('pay','PaypalController@doPay');

所以网址应该是

var url = 'pay';

代替

var url = 'index.php/pay';

顺便说一句,不确定是否还有其他问题(backnone)是错误的。

更新: toJSON是一种方法,所以应该是(你错过了()

var items = this.collection.toJSON();
于 2013-09-28T13:03:07.150 回答
0

我发现将主干集合转移到 Laravel 的 hack 解决方案是将集合转换为 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 模型数组。

于 2013-09-29T12:23:51.157 回答