Javascript Backgrid.JS:如何将编辑作为POST请求推送到服务器

Javascript Backgrid.JS:如何将编辑作为POST请求推送到服务器,javascript,backbone.js,backgrid,Javascript,Backbone.js,Backgrid,我有一张可编辑的桌子。下面是一个呈现表的函数,给定要呈现表的元素ID、列数组和控制器名称(用于构建URL)。URL的格式如下,其中exampleController是示例控制器: 要更新:php/gateway.php?sender=exampleController&action=Update 要列出:php/gateway.php?sender=exampleController&action=List 我希望POST请求包含编辑的信息以及相应的行 我试着在下面的代码中做一些事情。它提出

我有一张可编辑的桌子。下面是一个呈现表的函数,给定要呈现表的元素ID、列数组和控制器名称(用于构建URL)。URL的格式如下,其中exampleController是示例控制器:

  • 要更新:php/gateway.php?sender=exampleController&action=Update
  • 要列出:php/gateway.php?sender=exampleController&action=List
我希望POST请求包含编辑的信息以及相应的行

我试着在下面的代码中做一些事情。它提出了请求,但不包括帖子

var initiateGrid = function(element_id, columns, controllerName) {
    var gridModel = Backbone.Model.extend({

        initialize: function() {
            Backbone.Model.prototype.initialize.apply(this, arguments);
            this.on("change", function(model, options) {
                if (options && options.save === false) {
                    return;
                }
                this.sync();
            });
        },
        sync: function(method, model, options) {
            var methodUpdateMethodUrl = 'php/gateway.php?sender=' + controllerName + '&action=update';
            options = options || {};
            options.url = methodUpdateMethodUrl;
            Backbone.sync(method, model, options);
        }
    });

    var gridCollectionModel = Backbone.Collection.extend({
        model: gridModel,
        url: 'php/gateway.php?sender=' + controllerName + '&action=list',
    });

    var gridCollection = new gridCollectionModel();

    var grid = new Backgrid.Grid({
        columns: columns,
        collection: gridCollection,
        emptyText: "No Data"
    });

    var gridContainer = $("#" + element_id);
    gridContainer.append(grid.render().el);

    gridCollection.fetch({
        reset: true
    });

};
当然,还有一个错误:

未捕获的TypeError:无法读取未定义的属性“触发器”

尝试更改url

url:function(){
返回'php/gateway.php?sender='+controllerName+'&action=list',

}

以下代码适用于我:

var initiateGrid = function(element_id, columns, controllerName) {

    var gridModel = Backbone.Model.extend({

        initialize: function() {
            Backbone.Model.prototype.initialize.apply(this, arguments);
            this.on("change", function(model, options) {
                this.sync("update", model, options);
            });
        },
        sync: function(method, model, options) {
            var methodUrl = {
                'update': 'php/gateway.php?sender=' + controllerName + '&action=update'
            };
            console.log(method, model, options);
            if (methodUrl && methodUrl[method.toLowerCase()]) {
                options = options || {};
                options.url = methodUrl[method.toLowerCase()];
            }
            Backbone.sync(method, model, options);
        }
    });

    var gridCollectionModel = Backbone.Collection.extend({
        model: gridModel,
        url: 'php/gateway.php?sender=' + controllerName + '&action=list',
    });

    var gridCollection = new gridCollectionModel();

    var grid = new Backgrid.Grid({
        columns: columns,
        collection: gridCollection,
        emptyText: "No Data"
    });

    var gridContainer = $("#" + element_id);
    gridContainer.append(grid.render().el);

    gridCollection.fetch({
        reset: true
    });

};
和PHP来获取数组:

function get_form_data() {
    $dump = json_decode(file_get_contents('php://input'));
    $transfer_info = array();
    foreach ($dump as $key => $value) {
        $transfer_info[$key] = $value;
    }
    return $transfer_info;
}