如何停止附加相同的 url 参数以在主干中发布表单

How to stop appending same url parameter to post a form in backbone

本文关键字:布表单 表单 何停止 参数 url      更新时间:2023-09-26

提交表单并传递附加到其中的 url 参数。 每次单击时,参数都会附加到相同的现有参数。

这就是它的行为方式,我做错了哪里。 我是骨干网的新手。

http://localhost:8080/abc?username=&password=?username=&password=  
http://localhost:8080/abc?username=&password=?username=&password=  
http://localhost:8080/abc?username=&password=?username=&password=?username=&password=  

.HTML:

<form method="post" role="form" autocomplete="off" name="abc" id="abc"></form>

型:

var signin = Backbone.Model.extend({
        defaults :{},
        url: '/abc'
});

视图:

events: { 
    "click .sgIn" : "sigIn",
}
sigIn : function(evt){
    evt.preventDefault();
    var data = this.$el.find('#abc').serialize();
    this.model.set(data);
    this.model.url = this.model.url+"?"+data;
    this.model.save(this.model.toJSON(), {
      success: function(model, response) {},
      error: function(model, error) {}
   });
}
每次

调用sigIn时,您都会url修改模型:

this.model.url = this.model.url+"?"+data;

您可以改为将 url 作为xhr选项传递:

sigIn : function(evt){
  evt.preventDefault();
  var data = this.$el.find('#abc').serialize();
  this.model.set(data);
  this.model.save(null, {
    url: this.model.url+"?"+data,
    success: function(model, response) {},
    error: function(model, error) {}
  });
}

但是,通过这样的GET发送用户名和密码之类的东西不是一个好主意。 save()应该发送POSTUPDATE,除非您没有覆盖某些内容。此外,默认情况下save()将发送模型数据,无需传递this.model.toJSON(),因为您在调用之前将数据设置为模型save()