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


Maxime Richard
Auteur
Réponse acceptée

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

Salut,

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

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');
        }
    });
});

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

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

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 ?

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.

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.

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');
?>