Je sais que cette question a été posée à plusieurs reprises, mais je ne trouve pas de similitude avec mon problème. Je reçois cette erreur uniquement dans Chrome. Dans tous les autres navigateurs, tout va bien. Je retourne des données avec JSON à plusieurs endroits, mais comme mon code fonctionne dans d'autres navigateurs, je suppose que rien ne va pas avec cela . Chrome ne me montre pas où est l'erreur (dans mon code), il me montre ces erreurs:
Voici comment j'utilise JSON:
$.post("getData.php", {'id' : id}, function(data){
var obj = jQuery.parseJSON(data);
.
.
.
... some mysqli query
$data = $query->fetch_assoc();
echo json_encode($data);
Donc, je ne vois pas de problème ici, quelqu'un peut-il m'aider avec cela.
Erreur avec Uncaught SyntaxError: Unexpected token <
en utilisant @Mario answer mais ce n’était qu’une partie de mon problème. Un autre problème est que javascript ne récupère aucune donnée du fichier PHP. Cela a été résolu en utilisant ce code, dans le fichier PHP: header("Content-Type: text/javascript; charset=utf-8");
Cette réponse se trouve sur ce lien, où j'ai ouvert une autre question pour résoudre ce problème: Impossible de recevoir les données JSON de PHP dans Chrome et Opera
Vous pouvez vérifier votre réseau (console) et voir la réponse du serveur ... Le "<" sera la première lettre de votre réponse. Quelque chose comme "<" index non défini XY dans la ligne Z> "
Ma solution à cela est assez incroyable.
<script type="text/javascript" src="/js/dataLayer.js?v=1"></script>
Le nom de fichier dans l'attribut src devait être en minuscule:
<script type="text/javascript" src="/js/datalayer.js?v=1"></script>
et cela a résolu le problème de manière quelque peu inexplicable.
Dans les deux cas, la référence renvoyait 404 pour les tests.
J'ai eu la même erreur ("Uncaught SyntaxError: Jeton inattendu <") à ces deux lignes lors du test d'un exemple d'application.
<script type = "text/javascript" src="raphael-min.js"></script>
<script type = "text/javascript" src="kuma-gauge.jquery.js"></script>
Après un contrôle, je me suis rendu compte que les emplacements de fichiers locaux ne sont pas corrects et que mon application de serveur local renvoie la page par défaut comme résultat. L'application client peut trouver les fichiers, mais les fichiers fondés sont la page par défaut, pas les fichiers * .js. Je reçois donc Uncaught SyntaxError: Jeton inattendu <
J'ai changé l'emplacement d'origine sur l'intenet andit résolu.
<script type = "text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/raphael/2.1.2/raphael-min.js"></script>
<script type = "text/javascript" src="//www.jqueryscript.net/demo/Creating-Animated-Gauges-Using-jQuery-Raphael-js-kumaGauge/js/kuma-gauge.jquery.js"></script>
Pour remplacer l'erreur que vous pourriez rencontrer dans Chrome (et probablement dans Safari), essayez de définir le paramètre Ajax sur dataType: "json"
. Ensuite, vous ne devriez pas appeler parseJSON()
sur la obj
car la réponse que vous obtiendrez est désérialisée.
J'ai commenté mon code: // $('#description').val('<?php echo $_POST['description']; ?>');
et j'ai eu cette erreur.
header("Location: route_to_main_page");
J'ai rencontré ce problème tout en ayant un fichier de gestion d'erreur 404 personnalisé. Au lieu de lancer du contenu HTML, il était supposé rediriger vers l'URL de la page principale. Cela a bien fonctionné.
Ensuite, j'ai utilisé cela comme squelette pour un projet suivant. Par conséquent, si vous ne modifiez pas réellement "route_to_main_page" sur le nouveau projet (une URL différente), "route_to_external_url" est renvoyé. " Uncaught SyntaxError: Jeton inattendu <".
J'ai rencontré un problème similaire lorsque j'ai déplacé certains fichiers js dans des dossiers puis déployés en production. Après quelques difficultés, j'ai découvert que les fichiers js n'étaient pas réellement déployés en production. Alors
Donc, en l’absence de fichier js, le serveur répond ensuite comme indiqué ci-dessous
<!doctype html>
<html>
<someTag />
<AnotherTag />
</html>
C’est pourquoi nous obtenonsUncaught SyntaxError: Jeton inattendu <
Si vous essayez d'effectuer un téléchargement de fichier Ajax ou quelque chose de similaire, vous devez vous débarrasser de l'affichage de HTML supplémentaire après avoir imprimé le texte de votre réponse ajax. Cela donne probablement ce message d'erreur. Si vous utilisez le framework PHP, vous devez suivre la syntaxe du framework pour mettre fin à l'application. Si vous codez du PHP pur, vous pouvez utiliser "exit" après le texte de votre réponse ajax.
J'espère que cela aidera à gagner du temps pour trouver une solution à ce problème. :) codage heureux !!!
Eu la même erreur. Mon problème était dû au décalage dans le répertoire de mon projet et à l’omission d’ajuster le chemin de mes fichiers statiques sur le serveur pour refléter le nouveau chemin (c’était ./src/public
mais aurait dû être ./public
).
On dirait que tout le monde a des expériences différentes et donc des solutions aussi :) Ceci est mon "histoire".
Mon truc venait d'un fichier validate.php récupéré avec ajax. La sortie devait être:
$response['status'] = $status;
$response['message'] = $message;
$response['param'] = $param;
echo json_encode($response);
Et l'erreur à l'origine de l'erreur "Jeton inattendu <" était simplement que, dans certains cas, le message $ n'avait pas été déclaré (mais uniquement $ status et $ param). Donc, ajouté ceci au début du code.
$message = ''; // Default value, in case it doesn't get set later on.
Donc, je suppose que ces "petites choses" peuvent dans ce scénario être très importantes. Veillez donc à bien vérifier votre code et à le rendre blindé.
changez le en
$.post({
url = 'getData.php',
data : { 'id' id } ,
dataType : 'text'
});
De cette façon, ajax n'essaiera pas d'analyser les données en json ou similaire.
Le seul endroit où cela a fonctionné pour moi est lorsque je place les scripts dans le dossier public
où réside mon index.html
, puis que je place ces <script type="text/javascript" src="test/test.js"></script>
dans la balise <body>
.
Il se peut que la ressource que vous essayez de demander se trouve sous un accès restreint via la configuration de votre application Web. En d'autres termes, l'utilisateur doit être connecté pour que le fichier soit servi.
Essayez d'ajouter ceci à votre fichier Web.Config ( ceci est pour les applications .NET ):
<location path="js/resourcefile.js">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
Vous pouvez le placer n'importe où avant la balise de fermeture configuration.