Heim  >  Artikel  >  Web-Frontend  >  Wie behebe ich den Fehler „Unerwartetes Token:“ bei der Verwendung von jQuery.ajax zum Abrufen von JSON von Node.js?

Wie behebe ich den Fehler „Unerwartetes Token:“ bei der Verwendung von jQuery.ajax zum Abrufen von JSON von Node.js?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-19 22:53:01737Durchsuche

How to Resolve the

Unerwarteter Token-Doppelpunkt JSON in jQuery.ajax#get

Problem:

Bei der Verwendung Wenn jQuery.ajax#get JSON-Daten von einer Node.js-API abruft, tritt in Chrome der Fehler „Unerwartetes Token:“ auf.

Kontext:

  • Serverseitiger Code: Ein Node.js Express-Server gibt JSON-Daten im Format zurück: {"Name": "Tom", "Beschreibung": "Hallo, ich bin es!"}.
  • Clientseitiger Code:Eine AJAX-Abrufanforderung wird in einem jQuery-Skript gestellt, um die JSON-Daten abzurufen.

Untersuchung:

Die Untersuchung des Fehlers in Chrome deutet darauf hin, dass die JSON-Antwort einen unerwarteten Doppelpunkt (:) enthält.

Lösung:

JSONP-Unterstützung aktivieren:

Das Problem entsteht, weil der Client eine JSONP-Antwort erwartet, bei der es sich um JSON-Daten handelt, die in einen JavaScript-Funktionsaufruf eingeschlossen sind. Um die JSONP-Unterstützung zu aktivieren, muss der Server das „Padding“ („P“) in die Antwort einschließen.

<code class="text">jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})</code>

Serverseitige Codeänderung:

An Unterstützen Sie JSONP in Node.js Express. Ändern Sie den Servercode wie folgt:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  const callback = req.query.callback;
  const data = {
    Name: "Tom",
    Description: "Hello it's me!"
  };

  if (callback) {
    res.setHeader('Content-Type', 'text/javascript');
    res.end(callback + '(' + JSON.stringify(data) + ')');
  } else {
    res.json(data);
  }
});

Alternativ:

Verwenden Sie die integrierte res.jsonp()-Methode von ExpressJS:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.jsonp({
    Name: "Tom",
    Description: "Hello it's me!"
  });
});

Clientseitige Codeänderung:

Auf der Clientseite sind keine Änderungen erforderlich. Standardmäßig übergibt jQuery den Callback-Query-String-Parameter mit dem Funktionsnamen.

Das obige ist der detaillierte Inhalt vonWie behebe ich den Fehler „Unerwartetes Token:“ bei der Verwendung von jQuery.ajax zum Abrufen von JSON von Node.js?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn