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:
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>
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); } });
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!" }); });
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!