AJAX json inattendue du jeton"

J'ai ce code:

    $.ajax({
            dataType: 'text',
            url: '/_/js/answers.json',
            type: "GET",
            success: function (data) {
                alert(data);
                alert(data.code);
                var result = JSON.parse(data);
                var hey = JSON.parse('{"code": 123}'); 
                alert(hey.code);
                alert(result.code);
            },
            error: function () {
                alert("code not found");
            }
        });

Dans la première alerte, alert(data) il me montre '{"code": 123}", dans le second alerte alert(data.code), il me dit undefined, dans la troisième alerte alert(hey.code), il me montre 123, et c'est ce que je veux, mais dans le quatrième alerte, la console me dit Uncaught SyntaxError: Unexpected token '.

Lorsque je change la JSON.parse à $.parseJSON, il fait exactement les mêmes choses.

Je ne sais pas quel est le problème, le json est fine (exactement le même que le json dans le var hé).

J'ai passé le json pour le serveur comme ceci:
javascript:

var json = {code: code};
        json = JSON.stringify(json);
        json = {data: json};

        $.ajax({
            url: "/_/js/write-json.php",
            type: "POST",
            dataType: 'json',
            data: json
        }); 

php:

    <?php
    $myFile = "answers.json";
    $fh = fopen($myFile, 'w') or die("can't open file");
    fwrite($fh,var_export($_POST['data'], true));
    fclose($fh);
    ?>

Merci, bhc11.

  • Il se peut que vos JSON n'est pas valide, pour être sûr de vérifier ici
  • J'ai vérifié, c'est exactement le même que le json dans le var hey.
  • Merci de poster au format json.
  • Le JSON contient singlequote caractères au début et à la fin, comme vous l'a montré? Qui n'est pas valide.
  • vous dites que votre alerte des états de données '{"code": 123}'. Cela inclut les guillemets simples qui ne sont pas destinés à être là. C'est votre problème.
  • l'ofc valides. Ses une chaîne de caractères qui est analysé!
  • Les guillemets simples sont une partie de Javascript syntaxe littérale, ils ne font pas partie de l'JSON lui-même.
  • droit, mais l'échantillon utilisé dans la question correctement à l'aide de citations.
  • alerte result.code ne devrait pas vous donner qu'une erreur de syntaxe. l'erreur provient de quelque chose d'autre.
  • Vous pouvez utiliser JSON.stringify () ou la fonction eval(données) avant de l'utiliser.
  • qui était-il, je l'ai changé pour data = $.parseJSON(data.substr(1, (data.length-2))), et cela a fonctionné. Merci
  • Je pense que vous devriez corriger le code côté serveur pour le retour JSON valide au lieu de prendre une sous-chaîne de la suite quand yur l'analyser. Juste par intérêt, aucune raison pourquoi vous n'êtes pas à l'aide de dataType: 'json' et simplement d'obtenir un objet que l' data param?
  • bhc11 - s'il vous Plaît faire comme @Adam a suggéré. Mieux d'avoir des données correctes pour commencer que d'essayer de les corriger plus tard.
  • Je l'ai fait, mais il m'a donné la fonction d'erreur. J'ai édité la question afin de montrer comment j'ai inséré le json. Peut-être que ce n'est pas de la bonne façon.

InformationsquelleAutor bhc11 | 2014-04-19