Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Backbonejs模型的.save()的PUT和POST请求_Javascript_Backbone.js_Model - Fatal编程技术网

Javascript Backbonejs模型的.save()的PUT和POST请求

Javascript Backbonejs模型的.save()的PUT和POST请求,javascript,backbone.js,model,Javascript,Backbone.js,Model,如何确认backbonejs.save()是否正在发送PUT请求??我检查了我的服务器端,它工作正常,服务器端没有问题。但是我的.save()不起作用 这是我的主干模型 define(['underscore','backbone'],function(_,Backbone) { var my_model = Backbone.Model.extend( { urlRoot: "http://localhost/back/server_file.php/num

如何确认backbonejs
.save()
是否正在发送PUT请求??我检查了我的服务器端,它工作正常,服务器端没有问题。但是我的
.save()
不起作用

这是我的主干模型

define(['underscore','backbone'],function(_,Backbone) 
{
    var my_model = Backbone.Model.extend(
    { 
        urlRoot: "http://localhost/back/server_file.php/number"
    });         
    return my_model;
});
下面是我如何使用
.save()

我想我的
.save()
正在向服务器发送POST请求

更新

我想我能找到我的问题。我在这里描述这一点

我想做什么

我想将backbonejs模型中的2个参数发送到服务器端脚本(我使用的是PHP SLIM框架)。基于这两个参数,服务器端脚本在数据库中用静态参数更新记录的另一个字段(该记录的两个字段与这两个参数匹配)

BackboneJ提供了什么(如我所想)

Backbonejs有一个id为JSON格式的模型。Backbonejs向服务器端脚本发送PUT请求。服务器端脚本只是将数据(作为JSON格式,像一个包)转储(更新)到具有匹配id的数据库中。Serer端脚本不希望查看数据内部

我(从firebug的网络标签中)得到了我的PUT请求URL,类似于
http://localhost/back/server_file.php/number/1 (这是id)
。另一方面,我想得到的URL就像
http://localhost/back/server_file.php/number/1 (id第一个参数)/456(第二个参数)


如果我是对的,任何人都可以说我如何实施我的计划

您可以调试
Chrome Developer Tools
网络
选项卡中发送的请求,也可以使用网络工具如
Fiddler
查看所有请求

请参阅随附的“查看所使用的请求方法的位置”

这应该行得通

My_model.set(my_data);

My_model.save(null, {
  wait : true,
  url : "http://localhost/back/server_file.php/number/1/456",
  success : function(response){
  },
  error : function(e){
  }
});

请参见Chrome Developer Tools的
network
选项卡,或者您可以使用类似
Fiddler
的网络工具查看所有请求。感谢@coding\u白痴的回复。我从网络面板得到的URL是问题出在哪里?这取决于服务器上是否已经存在该模型(即该模型具有id属性)。如果PUT已经存在,则由底层
主干.sync
方法使用。如果服务器上不存在该模型(无id属性),则使用POST。谢谢@kandilaki的回复。你可以理解我的观点。事实上,我知道你的话,但我如何在我的代码中实现这一点?我认为你的问题并不完全是关于你最终想要什么。但是如果我没弄错的话,你会希望
save
方法使用PUT而不是POST。如果是这样,那么您可以定义底层主干使用的请求类型。sync:
model.save(data,{type:'PUT',success:function…})
My_model.set(my_data);

My_model.save(null, {
  wait : true,
  url : "http://localhost/back/server_file.php/number/1/456",
  success : function(response){
  },
  error : function(e){
  }
});