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