tengo un modelo Backbone.js unos valores y una url:Backbone.js en base de datos MySQL
var Box = Backbone.Model.extend({
url: "./save.php",
defaults: {
x: 0,
y: 0,
w: 1,
h: 1
}
});
Entonces tengo una instancia de este modelo y procedo a guardarlo:
var box = new Box({ x:10, y:10, w:200, h:200 });
box.save();
Ahora quiero salvar este modelo en una base de datos MySQL usando un script PHP "save.php", que es la siguiente:
<?php
include('connection.php');
$id = $_POST['cid'];
$x = $_POST['x'];
$y = $_POST['y'];
$w = $_POST['w'];
$h = $_POST['h'];
mysql_query("INSERT INTO boxes (id, x, y, w, h)
VALUES('$id', '$x', '$y', '$w', '$h')
") or die(mysql_error());
?>
echo "Data Inserted!";
He intentado leer muchos tutoriales pero no puedo hacer que este sencillo modelo de salvar funcione. ¿Por qué mi código no funciona? ¿Alguna idea sobre cómo se puede resolver esto?
Gracias
EDIT: SOLUCIÓN RÁPIDA
En el script php, la forma correcta para obtener la información del objeto JSON enviado es el siguiente:
$box_data = json_decode(file_get_contents('php://input'));
$x = $box_data->{'x'};
$y = $box_data->{'y'};
$w = $box_data->{'w'};
$h = $box_data->{'h'};
Y para almacenar en la base de datos:
mysql_query("INSERT INTO boxes(id, x, y, w, h)
VALUES('', '$x', '$y', '$w', '$h') ")
or die(mysql_error());
De esta forma, se insertará una fila en la tabla "cajas" con la información de cada uno de los atributos del modelo de red troncal. El método de solicitud del servidor en este caso es POST y el ID en la tabla "cuadros" está configurado para autoincrementarse.
¿por qué no lo guarda un JSON en un campo? Sería extensible O un enfoque mucho mejor sería utilizar una base de datos basada en documentos como CouchDB o MongoDB, donde los datos ya se guardan como JSON. –
¿Ve el mensaje Datos insertados? ¿Puede ver que se está realizando la solicitud al archivo php? ¿recibes alguna respuesta? – danwellman