Sto provando a eseguire la mia prima app RESTful con Backbone e Yii Framework. Non ho avuto problemi con i metodi GET ma sono bloccato con il metodo POST, per creare un nuovo elemento.
Ho un modello Commento in Backbone:
var commentModel = Backbone.Model.extend({
urlRoot: "index.php/api/comments",
idAttribute: 'id',
defaults: {
content: "Empty comment",
status: 1
}
});
A mio avviso ho aggiungere una funzione per creare un nuovo commento passando i valori dal relativo modulo:
on_submit: function(e) {
var new_comment = new Comment({author_id: this.$('#author_text').val(), content: this.$('#content_text').val(), post_id: this.$("#post_text").val(), status: this.$("#status_text").val()});
new_comment.save();
},
Guardando la richiesta con Firebug sembra tutto a posto, nella scheda POST posso vedere tutti i valori:
JSON
author_id "7"
content "Epic fail"
post_id "7"
status "2"
Source
{"content":"Epic fail","status":"2","author_id":"7","post_id":"7"}
Ma nel mio php Api la variabile $ _POST è vuota!
foreach($_POST as $var=>$value) {
if($model->hasAttribute($var))
$model->$var = $value;
else
$this->_sendResponse(500);
}
Qualcuno ha qualche idea? Leggendo la documentazione di Backbone.Sync, capisco che dovrebbe usare il POST per creare una richiesta.
ho trovato una soluzione ottenere i valori da:
file_get_contents('php://input')
ma id non si sente bene a me ...
Grazie.
Qualcosa del genere http://stackoverflow.com/questions/10930789/insert-backbone-js-m odel-in-mysql-database/10931092 # 10931092? – nikoshr
Il valore '$ _SERVER ['REQUEST_METHOD']' è "POST", quindi i valori dovrebbero essere all'interno dell'array $ _POST, ho ragione? – Ingro
No, il metodo è un POST, ma i dati vengono inviati al corpo HTTP. Non viene inviato come forma regolare con i parametri impostati e un application/x-www-form-urlencoded come tipo mime. Controlla cosa viene inviato in questo Fiddle http://jsfiddle.net/RK7LN/ – nikoshr