这是我正在使用的示例模型:
var UserModel = Backbone.Model.extend({
urlRoot: 'json.php',
defaults: {
name: '',
email: ''
}
});
var user = new UserModel();
// Notice that we haven't set an `id`
console.log(user.isNew());
var userDetails = {
name: 'Thomas',
email: 'thomasalwyndavis@gmail.com'
};
// Because we have not set a `id` the server will call
// POST /user with a payload of {name:'Thomas', email: 'thomasalwyndavis@gmail.com'}
// The server should save the data and return a response containing the new `id`
user.save(userDetails, {
success: function (user) {
console.log(user.toJSON());
}
})
在服务器端(apache),我使用 php 来获取数据。这显然是在保存一个新模型,但是 $_POST 变量为空并且数据出现在:
file_get_contents("php://input");
该数据是否应该出现在 $_POST 变量中?也许它是一个 POST,但 Backbone 没有创建查询字符串,这意味着 $_POST 变量将为空。在服务器端,我可以检查 json 数据以查看它是否是新对象(通过 id 的存在),但是有没有办法区分 WAMP 上的 put 和 post 之间的区别?也许浏览器甚至不支持 put 并且只是发布?