Post JSON pour Codeigniter contrôleur
Je suis en train de recevoir et d'analyser un objet JSON envoyé dans une requête POST à l'aide de Codeigniter, mais je ne peux pas "trouver".
C'est mon code de contrôleur:
public function parse () {
$json = $this->input->post();
$json = stripslashes($json);
$json = json_decode($json);
print_r($json);
}
C'est mon objet JSON:
{"data":"value"}
OriginalL'auteur Jonathan Clark | 2011-12-21
Vous devez vous connecter pour publier un commentaire.
C'est la bonne façon de le faire.
Ajoutez simplement de corriger le type de contenu à votre en-tête de requête, 'Content-Type: application/json". Comme mentionné par Chris, Codeigniter lit d'entrée avant de votre méthode appelée.
Tout ce que vous les gars sont des commentaires, ils n'ont pas de rapport à la date à laquelle j'ai posté cette réponse, ce qui est correct à la date que j'ai posté.
OriginalL'auteur CMCDragonkai
Lorsque vous utilisez $this->input->raw_input_stream vous pouvez le lire plusieurs fois et c'est en fait la même que file_get_contents('php://input'). Cela fonctionne sur CI3. Je ne sais pas si cela fonctionne sur CI2.
OriginalL'auteur Firze
Essayer ce code, il va afficher un tableau avec tous vos paramètres.
$input_data
sera de retour tableauOriginalL'auteur Tan Trinh
Essayez plutôt ceci
Vous devez passer dans la clé de la variable de données que vous voulez à partir du poste de tableau comme argument à
post()
Cela fonctionne: data={"color":"blue"}, mais est-ce ok? Ce serait cool, avec une bibliothèque qui pourrait "convertir" pour que je puisse utiliser le Codeigniter validation.
OriginalL'auteur aziz punjani
Firze réponse est bonne, mais voici une réponse plus élaborée. Je ne suis pas autorisés à commenter donc je suis annonce comme une réponse.
Qu'il a à faire avec CodeIgniter ne pas être en mesure de récupérer
JSON
.jQuery
fait un peu sous le capot astuces et transforme vos données enform-data-x
, c'est pourquoi il fonctionne lorsque vous ne spécifiez pas lecontent type
, ne pas encoder votre objet, ou d'autres situations.Si vous voulez un pur
JSON
la solution est d'utiliser$this->input->raw_input_stream
chercher votreJSON
et le décoder à l'aide dephp
'sjson_decode
. Vérifier la solution complète et le code ci-dessous:Récupérer le JSON de données de POSTES dans CodeIgniter
OriginalL'auteur jimasun
assurez-vous de disposer de données de POSTES, à l'aide de
$this->input->post()
il retournera toujours vide, vous pouvez le mettre sur le type de saisie de nom de$this->input->post('name_of_input_text')
OriginalL'auteur Khairu Aqsara
Êtes-vous sûr que vous êtes à la Publication des données et ne pas faire un OBTENIR à la place? Je suis tombé sur cette question plus tôt aujourd'hui (qui est de savoir comment j'ai trouvé cette question) et j'ai été faire un POST, mais à l'aide de JSONP qui semble être fait avec un GET.
CodeIgniter a une fonction appelée get_post qui vous permettra d'obtenir les données à partir de l'endroit où il se trouve.
J'espère que cela vous aide.
Vous pouvez le faire manuellement comme donc, si vous le souhaitez.
OriginalL'auteur Chris M
Je sais que c'est un vieux post, mais pour d'autres, la recherche, cela peut être utile:
Côté navigateur, j'ai créer mon paquet de données à l'aide de code similaire à ce modèle:
Je puis "post" mouvement pour le serveur.
Dans le contrôleur, j'ai ensuite utiliser la logique suivante:
OriginalL'auteur 300baud
Juste ajouter correct type de contenu à votre en-tête de demande
OriginalL'auteur Shailesh
Afin d'utiliser la norme CI méthodes.
Dans index.php, insérer quelques lignes:
À les mettre en œuvre dans le bootstrap.
RIP Codigniter...(
OriginalL'auteur Leonid Rakuts
OriginalL'auteur ATM Fahim
essayer
OU
j'ai essayé cela aussi et cela me donne un tableau vide
OriginalL'auteur Philip