Backbone.js创建方法不向sinatra发送参数
我对主干网还不熟悉,并试图在西纳特拉建立它,但我似乎无法让一个简单的创建工作 我已将我的模型/系列设置为:Backbone.js创建方法不向sinatra发送参数,backbone.js,sinatra,Backbone.js,Sinatra,我对主干网还不熟悉,并试图在西纳特拉建立它,但我似乎无法让一个简单的创建工作 我已将我的模型/系列设置为: var TEAM_ID = window.location.pathname.split('/')[1]; // From url $(function () { var TeamMember = Backbone.Model.extend({ defaults: { name : "" } }); var TeamMembers = Backbo
var TEAM_ID = window.location.pathname.split('/')[1]; // From url
$(function () {
var TeamMember = Backbone.Model.extend({
defaults: {
name : ""
}
});
var TeamMembers = Backbone.Collection.extend({
model: TeamMember,
url: "/" + TEAM_ID + "/team-members.json"
});
var teamMembers = new TeamMembers;
var TeamMemberView = Backbone.View.extend({
events: {
"click #new-team-member-form .submit-button" : "handleNewTeamMember"
},
handleNewTeamMember: function(data) {
var inputField = $('input[name=new_team_member_name]');
console.log("Pre create");
// This doesn't get sent to the server!!
var teamMember = teamMembers.create({name: inputField.val());
console.log("Post create");
return false; // Don't submit form
},
render: function() {
console.log("Render team member");
return this;
}
});
// ...
var teamMemberView = new TeamMemberView({el: $('#week-view')});
});
html看起来像:
<table id="week-view">
<!-- ... -->
<form id="new-team-member-form" action="/some-add-url" method="post">
<fieldset class="new-object-fieldset" title="New team member">
<legend>New team member</legend>
<label for="new_team_member_name">Add new</label>
<input type="text" name="new_team_member_name" title="Add member" class="new-object-text-box" />
<button type="submit" name="new_team_member" value="new_team_member" class="submit-button">+</button>
<div id="help-new"></div>
</fieldset> <!-- New team member -->
</form>
<!-- ... -->
post '/:team_id/team-members.json' do
logger.info("Add team member (json): #{params}")
end
但是,sinatra服务器仅显示params[:team_id]
,而不显示teamMembers.create
行上的name
参数。我是在干傻事吗?没有正确初始化某些内容
我已经看过了,
,还有,但我似乎找不到任何答案。我觉得我做了些傻事,但就是看不见 结果是,我不知道如何正确提取sinatra中的json参数。从这个站点:,我发现我必须使用
request.body.read.to_s
而不是params
散列ie
post '/:team_id/team-members.json' do
request_body = JSON.parse(request.body.read.to_s)
team_member_name = request_body["name"]
# ...
end
我也有同样的问题。不过,我是学PHP的。由于主干网发送的POST数据不是查询字符串,而是普通的JSON字符串,因此无法通过
$\u POST
获取数据。要读取主干POST数据,请执行以下操作:
// the 'true' param returns an array rather than an object
$post = json_decode(file_get_contents('php://input'), true);
您也可以直接从$HTTP\u RAW\u POST\u DATA
中读取它