3

あなたが私を助けてくれることを願っています。mysql とバックボーンを使用してデータベースからデータを取得しようとしています。問題は、「ユーザー」を作成して、それらすべてを取得できることです。しかし、私が作ろうとすると:

var user = new User({id: 10});

指定された 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"}

なんで ?

4

1 に答える 1