Bagaimana untuk Menyelesaikan Ralat \'Token Tidak Dijangka :\' Semasa Menggunakan jQuery.ajax untuk Mengambil JSON daripada Node.js?

Patricia Arquette
Lepaskan: 2024-10-19 22:53:01
asal
736 orang telah melayarinya

How to Resolve the

Token Colon JSON yang tidak dijangka dalam jQuery.ajax#get

Masalah:

Apabila menggunakan jQuery.ajax#get untuk mendapatkan semula data JSON daripada API Node.js, ralat "Token tidak dijangka :" berlaku dalam Chrome.

Konteks:

  • Kod Sebelah Pelayan: Pelayan Node.js Express mengembalikan data JSON dalam format: {"Nama":"Tom","Penerangan":"Helo, ini saya!"}.
  • Kod Sebelah Pelanggan: Permintaan dapatkan AJAX dibuat dalam skrip jQuery untuk mendapatkan semula data JSON.

Penyiasatan:

Memeriksa ralat dalam Chrome menunjukkan bahawa respons JSON mengandungi kolon yang tidak dijangka (:).

Penyelesaian:

Mendayakan Sokongan JSONP:

Isu timbul kerana pelanggan menjangkakan respons JSONP, iaitu data JSON yang dibungkus dalam panggilan fungsi JavaScript. Untuk mendayakan sokongan JSONP, pelayan mesti memasukkan "Padding" ("P") dalam respons.

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

Pengubahsuaian Kod Bahagian Pelayan:

Kepada sokong JSONP dalam Node.js Express, ubah suai kod pelayan seperti berikut:

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);
  }
});
Salin selepas log masuk

Sebagai alternatif:

Gunakan kaedah res.jsonp() terbina dalam ExpressJS:

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

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

Pengubahsuaian Kod Sebelah Pelanggan:

Tiada pengubahsuaian diperlukan pada sisi pelanggan. Secara lalai, jQuery akan menghantar parameter rentetan pertanyaan panggil balik dengan nama fungsi.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat \'Token Tidak Dijangka :\' Semasa Menggunakan jQuery.ajax untuk Mengambil JSON daripada Node.js?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan