Envoyer des info json en ajax : Error !: [object Object]

Par Maxime Richard, il y a 10 ans


Bonjour,

Voila je rencontre un petit problème avec mon code.

Ce que je veux

Je veux envoyer les modification de l'ordre de mes menu en json mais je ne suis pas sur que je mis prend bien, voici le code ajax

$('#saved').click(function(){ var addinfo = $('#nestable-output').val(); $.ajax({ type: "POST", url: "ordre.php", data: {data:addinfo}, dataType:"json", error:function(msg){ alert( "Error !: " + msg ); }, success:function(data){ alert('ok'); }});

Dans var addinfo les donnée ressemble a sa

[{"id":2},{"id":3,"children":[{"id":4},{"id":5}]},{"id":6}]

Ce que j'obtiens

Je reçois l'erreur : Error !: [object Object]
J'ai rechercher et essayer plusieurs technique sur le web ... mais sa na pas fonctionner :/

Merci en avance

9 réponses

betaWeb, il y a 10 ans

Salut,

Je reçois l'erreur : Error !: [object Object] A quel moment ? On est censé le deviner ?.. ;)

sizo0, il y a 10 ans

Salut. Il faut transformer ton objet en json. Utiliser JSON.stringify.

$('#saved').click(function(){ var addinfo = $('#nestable-output').val(); $.ajax({ type: "POST", url: "ordre.php", data: {data: JSON.stringify(addinfo)}, dataType:"json", error:function(msg){ alert( "Error !: " + msg ); }, success:function(data){ alert('ok'); } }); });
Maxime Richard, il y a 10 ans

@betaWeb Ces quand j'appelle la fonction ajax ...
@sizo0 je le fait mais sa ne change rien :/

sizo0, il y a 10 ans

Tu peux nous afficher le stack d'erreur pour voir d'où vient réellement le problème.

Hyperclub, il y a 10 ans

Salut,
Quand tu appelles directement ta page ordre.php as-tu une erreur ? En forçant par exemple tes valeurs $_POST.
Ou bien as-tu une erreur dans ton débugueur dans l'ongler Network/Réseau ?

Maxime Richard, il y a 10 ans

Quand j'appelle directement la page ordre.php il n'y a aucune erreur j'ai meme fait le teste en passant ce qui devrais passer et l'action ce fait.

Maxime Richard, il y a 10 ans

J'ai changer dataType par html et maintenant sa fonctionne ... bizzare!

sizo0, il y a 10 ans

C'est pas bizarre, ça veut juste dire que ton code php ne rendait pas du json mais de l'html.
D'après le stack d'erreurs, l'erreur se situait autour de la ligne 163 de admin.php.

Hyperclub, il y a 10 ans

En effet, c'était l'objet de ma prochaine question : que renvoie ordre.php ?
Si tu veux renvoyer du json, comme tu as l'air de le vouloir, il faudrait que tu retournes le résultat via un :

<?php echo json_encode($data); ?>

Et idéalement changer le type de contenu via un header PHP (à insérer à la première ligne de ton ordre.php):

<?php header('Content-Type: application/json'); ?>