Kolon Token Tidak Dijangka: Menyelesaikan Ralat JSONP dalam jQuery.ajax#get
Apabila menghadapi ralat "Kolon Token Tidak Dijangka" dalam jQuery.ajax #get, adalah penting untuk memahami sifat permintaan JSONP (JSON dengan Padding). JSONP melibatkan penghantaran semula data JSON ke panggilan fungsi JavaScript global pada bahagian klien.
Untuk menyokong JSONP, pelayan mesti memasukkan "Padding" dalam respons. "Padding" terdiri daripada nama fungsi panggil balik diikuti dengan data JSON yang disertakan dalam kurungan:
jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})
Dalam contoh ini, nama fungsi panggil balik ialah jQuery111108398571682628244_1403193212453. Ralat berlaku kerana JavaScript menghuraikan JSONP sebagai JavaScript, dengan {...} juga mewakili blok.
Untuk membetulkan ralat ini, pelayan perlu memasukkan "Padding" dalam respons. Selain itu, jQuery biasanya akan menyertakan parameter rentetan pertanyaan panggil balik dengan nama fungsi. Untuk menampung ini, kod pelayan boleh menggunakan pernyataan bersyarat untuk menyemak parameter panggil balik dan menghantar respons dengan sewajarnya:
var callback = req.query.callback; var data = JSON.stringify({ Name : "Tom", Description : "Hello it's me!" }); if (callback) { res.setHeader('Content-Type', 'text/javascript'); res.end(callback + '(' + data + ')'); } else { res.setHeader('Content-Type', 'application/json'); res.end(data); }
Sebagai alternatif, ExpressJS menyediakan kaedah res.jsonp() yang sudah mengendalikan keadaan ini, menjadikannya lebih mudah untuk mengembalikan respons JSONP:
app.get( '/', function( req, res ) { console.log( 'req received' ); res.jsonp({ Name : "Tom", Description : "Hello it's me!" }); });
Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'Kolon Token Tidak Dijangka' dalam Permintaan JSONP Menggunakan jQuery.ajax#get?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!