Saya menjalankan panggilan AJAX di skrip MooTools saya, ini berfungsi dengan baik di Firefox tetapi di Chrome saya mendapatkan Uncaught SyntaxError: Unexpected token :
kesalahan, saya tidak bisa menentukan alasannya. Mengomentari kode untuk menentukan di mana kode yang buruk menghasilkan apa-apa, saya pikir itu mungkin masalah dengan JSON yang dikembalikan. Memeriksa di konsol saya melihat JSON kembali adalah ini:
{"votes":47,"totalvotes":90}
Saya tidak melihat masalah dengan itu, mengapa kesalahan ini terjadi?
vote.each(function(e){
e.set('send', {
onRequest : function(){
spinner.show();
},
onComplete : function(){
spinner.hide();
},
onSuccess : function(resp){
var j = JSON.decode(resp);
if (!j) return false;
var restaurant = e.getParent('.restaurant');
restaurant.getElements('.votes')[0].set('html', j.votes + " vote(s)");
$$('#restaurants .restaurant').pop().set('html', "Total Votes: " + j.totalvotes);
buildRestaurantGraphs();
}
});
e.addEvent('submit', function(e){
e.stop();
this.send();
});
});
javascript
mootools
google-chrome
trobrock
sumber
sumber
Jawaban:
Melihat kesalahan merah
di tab konsol pengembang Chrome Anda merupakan indikasi HTML di badan respons.
Apa yang sebenarnya Anda lihat adalah reaksi browser Anda terhadap baris teratas yang tidak terduga
<!DOCTYPE html>
dari server.sumber
Unexpected token :
. Jawaban Anda sama sekali tidak terkait dengan masalah OP.Hanya FYI untuk orang-orang yang mungkin memiliki masalah yang sama - Saya hanya harus membuat server saya mengirim kembali JSON sebagai aplikasi / json dan penangan default jQuery bekerja dengan baik.
sumber
application/json
menyelesaikan kesalahan. Saya tidak menggunakan JSONP.Ini baru saja terjadi pada saya, dan alasannya tidak ada alasan di atas. Saya menggunakan perintah jQuery getJSON dan menambahkan
callback=?
untuk menggunakan JSONP (karena saya harus pergi lintas domain), dan mengembalikan kode JSON{"foo":"bar"}
dan mendapatkan kesalahan.Ini karena saya harus memasukkan data panggilan balik, semacamnya
jQuery17209314005577471107_1335958194322({"foo":"bar"})
Berikut adalah kode PHP yang saya gunakan untuk mencapai ini, yang menurunkan jika JSON (tanpa panggilan balik) digunakan:
Semoga itu akan membantu seseorang di masa depan.
sumber
Saya baru saja menyelesaikan masalah. Ada sesuatu yang menyebabkan masalah dengan panggilan Permintaan standar, jadi ini adalah kode yang saya gunakan sebagai gantinya:
Jika ada yang tahu mengapa objek Permintaan standar memberi saya masalah, saya ingin tahu.
sumber
this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
- go figure$$
sana?Saya pikir saya akan menambahkan masalah dan resolusi saya ke daftar.
Saya mendapatkan:
Uncaught SyntaxError: Unexpected token <
dan kesalahan menunjuk ke baris ini dalam pernyataan sukses ajax saya:Saya kemudian menemukan bahwa selain hasil json, ada HTML yang dikirim dengan respons karena saya memiliki kesalahan dalam PHP saya. Ketika Anda mendapatkan kesalahan dalam PHP Anda dapat mengaturnya untuk memperingatkan Anda dengan tabel oranye besar dan tabel-tabel itulah yang membuang JSON.
Saya menemukan itu dengan hanya melakukan
console.log(response)
untuk melihat apa yang sebenarnya dikirim. Jika masalah dengan data JSON, coba lihat apakah Anda dapat melakukan console.log atau pernyataan lain yang memungkinkan Anda melihat apa yang dikirim dan apa yang diterima.sumber
Saat Anda meminta file JSON Anda, server mengembalikan
Content-Type
header JavaScript (text/javascript
) alih-alih JSON (application/json
).Menurut MooTools docs :
Hasilnya, MooTools mencoba untuk mengevaluasi JSON Anda sebagai JavaScript, dan ketika Anda mencoba untuk mengevaluasi JSON tersebut:
sebagai JavaScript, parser memperlakukan
{
dan}
sebagai ruang lingkup blok alih-alih notasi objek. Itu sama dengan mengevaluasi "kode" berikut:Seperti yang Anda lihat,
:
sama sekali tidak terduga di sana.Solusinya adalah mengatur
Content-Type
header yang benar untuk file JSON. Jika Anda menyimpannya dengan.json
ekstensi, server Anda harus melakukannya sendiri.sumber
Sepertinya respons Anda sedang dievaluasi entah bagaimana. Ini memberikan kesalahan yang sama di Chrome:
Ini disebabkan oleh kurung kurawal '{...}' yang ditafsirkan oleh javascript sebagai blok kode dan bukan objek literal seperti yang diharapkan.
Saya akan melihat fungsi JSON.decode () dan melihat apakah ada eval di sana.
Masalah serupa di sini: Eval () = Token tak terduga: kesalahan
sumber
Jika tidak ada yang masuk akal, kesalahan ini juga dapat disebabkan oleh Kesalahan PHP yang tertanam di dalam html / javascript, seperti yang di bawah ini
Bukan
<br />
dll dalam kode yang dimasukkan ke dalam html oleh PHP yang menyebabkan kesalahan . Untuk memperbaiki kesalahan semacam ini (suppress warning), gunakan kode ini di awalUntuk melihat, klik kanan pada halaman, "lihat sumber" dan kemudian periksa html lengkap untuk menemukan kesalahan ini.
sumber
" Uncaught SyntaxError: Unknown token " muncul kesalahan ketika data Anda mengembalikan format json yang salah, dalam beberapa kasus, Anda tidak tahu Anda mendapatkan format json yang salah.
silakan periksa dengan lansiran (); fungsi
pesan Anda yang diterima harus: {"firstName": "John", "lastName": "Doe"}
dan kemudian Anda dapat menggunakan kode di bawah ini
tanpa kesalahan " Uncaught SyntaxError: Token tak terduga "
tetapi jika Anda salah format json
mis:
atau
sehingga Anda mendapatkan format json yang salah, silakan perbaiki sebelum Anda JSON.decode atau JSON.parse
sumber
console.log()
daripadaalert()
untuk debugging.Ini terjadi pada saya hari ini juga. Saya menggunakan EF dan mengembalikan Entitas sebagai respons terhadap panggilan AJAX. Properti virtual pada entitas saya menyebabkan kesalahan ketergantungan siklus yang tidak terdeteksi di server. Dengan menambahkan atribut [ScriptIgnore] pada properti virtual, masalahnya telah diperbaiki.
Daripada menggunakan atribut ScriptIgnore, mungkin lebih baik mengembalikan DTO saja.
sumber
Ini terjadi karena saya memiliki pengaturan aturan di server ekspres saya untuk merutekan 404 kembali ke
/#
ditambah apa pun permintaan asli itu. Mengizinkan router sudut / js untuk menangani permintaan. Jika tidak ada rute js untuk menangani jalur itu, permintaan/#/whatever
dibuat ke server, yang hanya merupakan permintaan untuk/
, seluruh halaman web.Jadi misalnya jika saya ingin membuat permintaan
/correct/somejsfile.js
tapi saya salah ketik untuk itu/wrong/somejsfile.js
permintaan dibuat ke server. Lokasi / file itu tidak ada, sehingga server merespons dengan302 location: /#/wrong/somejsfile.js
. Browser dengan senang hati mengikuti pengalihan dan seluruh halaman web dikembalikan. Browser mem-parsing halaman sebagai js dan Anda dapatkanJadi untuk membantu menemukan jalur / permintaan yang menyinggung, cari 302 permintaan.
Semoga itu bisa membantu seseorang.
sumber
Saya memiliki masalah yang sama dan ternyata Json kembali dari server tidak valid Json-P. Jika Anda tidak menggunakan panggilan sebagai panggilan lintas domain, gunakan Json biasa.
sumber
Saya mendapat "
SyntaxError: Unexpected token I
" ketika sayajQuery.getJSON()
mencoba untuk menderialisasi nilai nilai floating pointInfinity
, yang dikodekan sebagaiINF
, yang ilegal di JSON.sumber
Dalam kasus saya, saya mengalami kesalahan yang sama, saat menjalankan aplikasi musim semi mvc karena pemetaan yang salah pada kontroler mvc saya
saya mengubah pemetaan di atas menjadi
atau
sumber
Bagi saya bola lampu menyala ketika saya melihat sumber ke halaman di dalam browser Chrome. Saya memiliki braket tambahan dalam pernyataan if. Anda akan segera melihat lingkaran merah dengan tanda silang di garis yang gagal. Ini adalah pesan kesalahan yang agak tidak membantu, karena Kesalahan Sintaks Uncaught: Token yang tidak terduga tidak merujuk ke nomor baris saat pertama kali muncul di konsol Chrome.
sumber
Saya melakukan kesalahan dalam hal ini
Sudah saya intialized
fs
variabel. Tapi sekali lagi saya taruhvar
di baris kedua. Yang ini juga memberikan kesalahan semacam itu ...sumber
Bagi mereka yang mengalami ini di AngularJs 1.4.6 atau yang serupa, masalah saya adalah dengan angular tidak menemukan template saya karena file di
templateUrl
(path) yang saya berikan tidak dapat ditemukan. Saya hanya harus menyediakan jalan yang bisa dijangkau dan masalahnya hilang.sumber
Dalam kasus saya itu adalah url yang salah (tidak ada), jadi mungkin 'kirim' Anda di baris kedua harus yang lain ...
sumber
Kesalahan saya adalah lupa kutip tunggal / ganda di sekitar url di javascript:
jadi salah kode adalah:
dan kode yang benar :
sumber
Uncaught SyntaxError: Token yang tidak terduga}
Chrome memberi saya kesalahan untuk kode sampel ini:
dan menyelesaikannya memperbaiki onclick menjadi seperti
Tapi kesalahannya tidak ada hubungannya dengan masalah ..
sumber