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
中读取它