3
我希望你能幫助我。我試圖從MySQL和骨幹數據庫中獲取數據。 事情是,我可以創建一個«用戶»,我可以得到他們所有人。但是,當我試圖讓:用MySQL&Backbone檢索數據JS
var user = new User({id: 10});
我一直有這種類型的搜索結果,wichever定id:
Object {id: "10", nom: "", age: "", prenom: ""}
但我從我的服務器的響應:
[{"id":"10","nom":"test","prenom":"test","age":"12"}]
所以,GET請求被執行,並返回一些沒有保存在«user»變量中的東西。
更多的解釋,這裏是我的腳本
// The model
var User = Backbone.Model.extend({
defaults: {
id:"",
nom:"",
age:"",
prenom:""
},
url: function(){
if (this.isNew()){
return "./users.php";
} else {
return "./users.php?id=" + this.id;
}
}
});
// The collection
var Users = Backbone.Collection.extend({
models:"user",
url:"./users.php"
});
// The view
var EditUser = Backbone.View.extend({
el: ".page",
render: function(options) {
var that = this
if (options.id) {
var user = new User({id: options.id});
console.log(user.toJSON());
user.fetch({
success: function(user){
var template = _.template($('#edit-user-template').html(), {user: user});
that.$el.html(template);
}
})
} else {
var template = _.template($('#edit-user-template').html(), {user:null});
this.$el.html(template);
}
},
events: {
'submit .edit-user-form' : 'saveUser',
},
saveUser: function(ev){
data = $(ev.currentTarget).serializeObject();
var user = new User();
user.save(data, {
success: function(user) {
router.navigate('', {trigger:true})
}
});
return false;
}
});
而且我users.php
<?php
$request_method = strtolower($_SERVER['REQUEST_METHOD']);
switch($_SERVER['REQUEST_METHOD']){
case 'POST':
save();
break;
case 'GET':
fetch();
break;
case 'PUT':
save();
break;
case 'DELETE':
// delete item
destroy();
break;
}
function fetch() {
$pdo=new PDO("mysql:dbname=nomade;host=localhost","","");
$sql = "SELECT * FROM users";
if (isset($_GET['id'])) $sql .= " WHERE id =".$_GET['id'];
$statement=$pdo->prepare($sql);
$statement->execute();
$results=$statement->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($results);
}
function save() {
$pdo=new PDO("mysql:dbname=nomade;host=localhost","","");
$data = json_decode(file_get_contents('php://input'));
$nom = $data->{'nom'};
$prenom = $data->{'prenom'};
$age = $data->{'age'};
$statement=$pdo->prepare("INSERT INTO users (prenom, nom, age) VALUES ('".$nom."','".$prenom."',$age)");
$statement->execute();
$results=$statement->fetchAll(PDO::FETCH_ASSOC);
echo json_encode($results);
}
?>
編輯 當我做一個
var user = new User({id: options.id});
user.fetch({
success: function(user){
console.log(user.attributes[0]);
// var template = _.template($('#edit-user-template').html(), {});
// that.$el.html(template);
}
});
我得到這樣的:
Object {id: "5", nom: "dsfsdfqds", prenom: "qsdfqsdf", age: "12"}
爲什麼?
看起來你的PHP正在返回一個數組,而不僅僅是一個'User'記錄。也許'fetchObject'會是一個更好的選擇? – WiredPrairie 2013-04-04 20:39:13
什麼都不做,但是多虧了幫助:) – Kai23 2013-04-04 20:43:51
什麼都不做?那麼你的問題並不清楚。當你調用fetchObject並將結果返回給你的客戶端時返回什麼? – WiredPrairie 2013-04-04 21:27:30