backbone通过save保存数据到服务器端,通过fetch从服务器端获取数据。两者执行时都会调用sync函数,而不会执行服务器端操作。因此,除非是自定义的sync操作(如采用websocket等非ajax方式提交),否则不需要覆盖sync函数。
问题1:php不能通过$_POST获取参数
save默认提交的是post方式,application/json的content-type,但是php的$_post只能接收Content-Type: application/x-www-form-urlencoded提交的数据,因此不能使用该方式获取参数。而采用file_get_contents("php://input")来获取
看了源码,设置Backbone.emulateJSON=true可更改contentType。但是我设置过依然没变。
问题:fetch可以传递参数吗?
当然可以。在fetch的options参数中设置data属性,传入jsonString参数。还可以通过type设置ajax的类型。默认是get。
if (Backbone.emulateJSON) {
params.contentType = 'application/x-www-form-urlencoded';
params.data = params.data ? {model: params.data} : {};
}
html代码
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="lib/jquery-1.7.2.min.js" type="text/javascript"></script>
<script src="lib/underscore-min.js" type="text/javascript"></script>
<script src="lib/backbone-min.js" type="text/javascript"></script>
</head>
<body>
</body>
<script>
(function ($){
//model 默认name
Man = Backbone.Model.extend({
//构造函数
initialize :function(){
//alert("you create me");
//监听属性更改事件
this.bind("change:name",function(){
var name = this.get("name");
alert("you change name to " + name);
})
this.bind("error",function(model,error){
//alert(error);
})
},
url:"save.php",
//Backbone 每次向服务器读取或保存模型时都要调用执行的函数 默认是jquery.ajax方式。
// sync:function(method, model) {
// //method会更具save的不同而改变,create,update,delete,read
// alert(method + ": " + JSON.stringify(model));
// model.id = 1;
// },
//默认属性
defaults:{
name:'david',
age:30
},
aboutMe:function(){
return "my name is " + this.get("name") + "今年" + this.get("age") + "岁";
},
validate:function(attributes){
if(attributes.name == "fuck"){
return "name is error!";
}
}
});
var man = new Man;
//实例更改属性
man.set({name:"andy"});
//save会执行Backbone.sync 若model定义了sync则不会执行服务器请求
man.save({success:function(model,response){
console.log(response);
}},{error:function(err){
console.log("err");
}});
// man.save({name: "luky"});
//从php服务器端获取返回数据 若model定义了sync则不会执行服务器请求
//从php服务器端获取返回数据
var man1 = new Man();
man1.fetch({
url:"fetch.php",
type:"POST",
data:"name=John&location=Boston",
success:function(model,response){
alert(response.name);
},
error:function(err){
console.log("err");
}
});
})(jQuery);
</script>
</html>
save.php
<?php
header('Content-Type: application/json; charset=utf-8');
//不能通过$_POST获取。因为$_POST['paramName'] 只能接收Content-Type: application/x-www-form-urlencoded提交的数据
$man = json_decode(file_get_contents("php://input"));
file_put_contents("data.txt", $man->name);
echo true;
?>
fetch.php
<?php
header('Content-Type: application/json; charset=utf-8');
file_put_contents("data.txt", $_POST["name"]);
die(json_encode(array('name'=>'tom')));
?>
分享到:
相关推荐
JS MVC框架(BackBone),主要包括两层:Model 和 View. Model 是用于数据交互 View 是用于界面显示的
Learn how Backbone.js brings MVC benefits to the client-side Write code that can be easily read, structured, and extended Work with the Backbone.Marionette and Thorax extension frameworks Solve ...
backbone 资料
backbone.js提供了一套web开发的框架,为复杂javascript应用程序提供一个mvc结构。, 《backbone.js应用程序开发》详细介绍了如何使用backbone.js完成web应用开发。全书从了解mvc、spa和backbone.js的基本知识开始,...
backbone.js提供了一套web开发的框架,为复杂javascript应用程序提供一个mvc结构。, 《backbone.js应用程序开发》详细介绍了如何使用backbone.js完成web应用开发。全书从了解mvc、spa和backbone.js的基本知识开始,...
backbone-boilerplate, 一组用于构建 backbone.js 应用程序的最佳实践和实用工具 Backbone 模板这个样板是许多研究和挫折的产物。 现有的boilerplates修改 Backbone 核心,没有构建过程,或者者是非常规范的,这样的...
backbone.js 1.1.2
Java 演示 backbone 基本用法 View Model Collection
Learn how Backbone.js brings MVC benefits to the client-side Write code that can be easily read, structured, and extended Work with the Backbone.Marionette and Thorax extension frameworks Solve ...
backbone官方Todo示例内含自己详细注释,建议运行之后打开浏览器调试同步学习。
react-backbone, Backbone 感知mixin用于响应和更多 反应中枢为 Backbone 提供对你的的响应,以响应你的组件,。将 backbone/backbone 。集合感知awareness你的反应组件mixin用于更新模型更改事件,请注意xhr活动和...
backbone中文api
Backbone.js初学者教程(1) 作者: 阿伦 日期: 2012 年 3 月 15 日 分类: Javascript标签: Backbone.js, Javascript, Tutorial, 前端开发, 结构化 最近在google trends上看了backbone.js近些年的搜索指数:
backbone+seajs实战
backbone-boilerplate, 用于构建 Backbone 应用程序的工作流 Backbone 模板这个样板是许多研究和挫折的产物。 现有boilerplates自由修改 Backbone 核心,缺少构建过程,并且非常规范;Backbone 样板文件的变更。...
backbone的扩展库backbone-localstorage.js
backbone的API 及实例
backbone+extjs 开发的API框架
backbone官网的todos demo,用require进行模块划分,个人感觉就是把前端写的跟后端代码一样,每个文件都注明要引用的模块文件,类似java的import。