Saya mencoba mempelajari beberapa html / css / javascript, jadi saya menulis sendiri proyek pengajaran.
Idenya adalah untuk memiliki beberapa kosakata yang terkandung dalam file json yang kemudian akan dimuat ke dalam tabel. Saya berhasil memuat file dan mencetak salah satu nilainya, setelah itu saya mulai menulis kode untuk memuat nilai ke dalam tabel.
Setelah melakukan itu saya mulai mendapatkan kesalahan, jadi saya menghapus semua kode yang saya tulis, meninggalkan saya dengan hanya satu baris (baris yang sama yang telah bekerja sebelumnya) ... hanya kesalahannya masih ada.
Kesalahannya adalah sebagai berikut:
Uncaught SyntaxError: Unexpected token o
(anonymous function)script.js:10
jQuery.Callbacks.firejquery-1.7.js:1064
jQuery.Callbacks.self.fireWithjquery-1.7.js:1182
donejquery-1.7.js:7454
jQuery.ajaxTransport.send.callback
Kode javascript saya terkandung dalam file terpisah dan hanya ini:
function loadPageIntoDiv(){
document.getElementById("wokabWeeks").style.display = "block";
}
function loadWokab(){
//also tried getJSON which threw the same error
jQuery.get('wokab.json', function(data) {
var glacier = JSON.parse(data);
});
}
Dan file JSON saya hanya memiliki yang berikut ini sekarang:
[
{
"english": "bag",
"kana": "kaban",
"kanji": "K"
},
{
"english": "glasses",
"kana": "megane",
"kanji": "M"
}
]
Sekarang kesalahan dilaporkan pada baris 11 yang merupakan var glacier = JSON.parse(data);
baris.
Ketika saya menghapus file json saya mendapatkan kesalahan: "DAPATKAN http: //.../wokab.json 404 (Tidak Ditemukan)" jadi saya tahu itu memuatnya (atau setidaknya mencoba).
sumber
var glacier = data;
harus cukup.Uncaught SyntaxError: Unexpected token I
karena Python mengkodekanjson.dumps([float('inf'),float('nan')]) == '[Infinity, NaN]'
Jawaban:
Sepertinya jQuery menebak tentang tipe data. Ia melakukan parsing JSON meskipun Anda tidak memanggil getJSON () - lalu ketika Anda mencoba memanggil JSON.parse () pada suatu objek, Anda mendapatkan kesalahan.
Penjelasan lebih lanjut dapat ditemukan dalam jawaban Aditya Mittal .
sumber
JSON.parse
sebuah objek, "Token tak terduga" dilemparkan hanya karena ia mencoba menguraikanobj_to_parse.toString()
, yaitu[object Object]
. CobaJSON.parse('[object Object]');
;)dataType
(apa pun alasannya), ia menggunakanContent-type
header HTTP dari respons untuk menentukan jenis data apa itu, dan mem-parsingnya jika itu adalah data yang dikenali jQuery.Masalahnya sangat sederhana
Anda menguraikannya dua kali.
get
menggunakandataType='json'
, jadi data sudah dalam format json. Gunakan$.ajax({ dataType: 'json' ...
untuk secara spesifik mengatur tipe data yang dikembalikan!sumber
Pada dasarnya jika tajuk respons adalah teks / html Anda harus menguraikan, dan jika tajuk respons adalah aplikasi / json itu sudah diuraikan untuk Anda.
Data yang diurai dari penangan keberhasilan jquery untuk respons teks / html:
Data yang diurai dari jquery success handler untuk aplikasi / json response:
sumber
Petunjuk lain untuk
Unexpected token
kesalahan. Ada dua perbedaan utama antara objek javascript dan json:JSON yang benar
Kesalahan JSON 1
Kesalahan JSON 2
Ucapan
Ini bukan jawaban langsung untuk pertanyaan itu. Tapi ini jawaban untuk
Unexpected token
kesalahan. Jadi mungkin itu membantu orang lain yang menemukan pertanyaan itu.sumber
Cukup responsnya sudah diuraikan, Anda tidak perlu menguraikannya lagi. jika Anda menguraikannya lagi itu akan memberi Anda "token tak terduga" namun Anda harus menentukan tipe data dalam permintaan Anda untuk menjadi tipe
dataType='json'
sumber
Saya punya masalah yang sama tadi dan solusi saya mungkin membantu. Saya menggunakan iframe untuk mengunggah dan mengonversi file xml ke json dan mengirimkannya kembali di belakang layar, dan Chrome menambahkan beberapa sampah ke data yang masuk yang hanya akan muncul sebentar-sebentar dan menyebabkan "Sintaks Tanpa PerintahError: Token Tak Terduga" kesalahan.
Saya sedang mengakses data iframe seperti ini:
yang bekerja dengan baik di localhost, tetapi ketika saya mengunggahnya ke server berhenti bekerja hanya dengan beberapa file dan hanya ketika memuat file dalam urutan tertentu. Saya tidak benar-benar tahu apa yang menyebabkannya, tetapi ini memperbaikinya. Saya mengubah baris di atas menjadi
pernah saya perhatikan ada sampah di respon HTML.
Singkatnya, periksa data respons HTML mentah Anda dan Anda mungkin menemukan sesuatu.
sumber
Ini juga terjadi ketika Anda lupa menggunakan
await
kata kunci untuk metode yang mengembalikan data JSON.Sebagai contoh:
akan melempar kesalahan karena yang hilang
await
. Apa yang sebenarnya dikembalikan adalahPromise
[objek], bukan astring
.Untuk memperbaikinya tambahkan saja menunggu seperti yang seharusnya:
Ini seharusnya cukup jelas, tetapi kesalahannya dinyalakan
JSON.parse
, jadi mudah untuk dilewatkan jika ada jarak antaraawait
panggilan metode danJSON.parse
panggilan.sumber
Pastikan file JSON Anda tidak memiliki karakter tambahan sebelum atau sesudah. Mungkin yang tidak patut? Anda mungkin ingin mencoba cara ini:
sumber
Di mana tempActivity sedang mem-feting data yang menghasilkan kesalahan "SyntaxError: Token tak terduga o di JSON di posisi 1 - Stack Overflow"
sumber