Bagaimana Anda bisa menangani kesalahan dalam panggilan getJSON? Saya mencoba merujuk layanan skrip lintas domain menggunakan jsonp, bagaimana Anda mendaftarkan metode kesalahan?
jquery
cross-domain
jsonp
getjson
Ajay
sumber
sumber
Jawaban:
$.getJSON()
adalah sejenis abstraksi panggilan AJAX biasa di mana Anda harus mengatakan bahwa Anda menginginkan respons yang dikodekan JSON.Anda dapat menangani kesalahan dalam dua cara: secara umum (dengan mengkonfigurasi panggilan AJAX Anda sebelum benar-benar memanggil mereka) atau secara khusus (dengan rantai metode).
'generik' akan seperti:
Dan cara 'spesifik':
sumber
JSONP
yang sepertinyagetJSON
tidak memanggilerror()
fungsi tersebut. Saya mempunyai masalah yang sama. Saya kira ini ada hubungannya dengan bagaimanaJSONP
penanganannya sama sekali berbeda denganAJAX
panggilan biasajQuery
meskipungetJSON
menangani keduanya.JSON
dilakukan denganXMLHTTPRequest
objek tetapiJSONP
dilakukan dengan menambahkan<script>
tag secara dinamis ke halamanHEAD
.Seseorang memberi Luciano poin-poin ini :) Saya baru saja menguji jawabannya - memiliki pertanyaan serupa - dan bekerja dengan sempurna ...
Saya bahkan menambahkan 50 sen:
sumber
Ini tambahan saya.
Dari http://www.learnjavascript.co.uk/jq/reference/ajax/getjson.html dan sumber resmi
" Metode jqXHR.success (), jqXHR.error (), dan jqXHR.complete () yang diperkenalkan di jQuery 1.5 sudah tidak digunakan lagi pada jQuery 1.8. Untuk menyiapkan kode Anda untuk penghapusan akhirnya, gunakan jqXHR.done (), jqXHR .fail (), dan jqXHR.always () sebagai gantinya. "
Saya melakukan itu dan di sini adalah potongan kode Luciano yang diperbarui:
Dan dengan deskripsi kesalahan plus menampilkan semua data json sebagai string:
Jika Anda tidak menyukai lansiran, gantikan dengan
console.log
sumber
Saya tahu sudah lama sejak seseorang menjawab di sini dan poster mungkin sudah mendapatkan jawabannya baik dari sini atau dari tempat lain. Namun saya berpikir bahwa posting ini akan membantu siapa saja yang mencari cara untuk melacak kesalahan dan batas waktu saat melakukan permintaan getJSON. Oleh karena itu di bawah ini saya menjawab pertanyaan itu
Struktur getJSON adalah sebagai berikut (ditemukan di http://api.jqueri.com ):
kebanyakan orang menerapkan itu menggunakan
di mana mereka menggunakan url var untuk menyediakan tautan ke data JSON, datatosend sebagai tempat untuk menambahkan
"?callback=?"
dan variabel lain yang harus dikirim untuk mendapatkan data JSON yang benar dikembalikan, dan fungsi sukses sebagai fungsi untuk memproses data .Namun Anda dapat menambahkan status dan variabel xhr di fungsi kesuksesan Anda. Variabel status berisi salah satu string berikut: "sukses", "notmodified", "error", "timeout", atau "parsererror", dan variabel xhr berisi objek XMLHttpRequest yang dikembalikan ( ditemukan di w3schools )
Dengan cara ini, mudah untuk melacak batas waktu dan kesalahan tanpa harus menerapkan pelacak batas waktu khusus yang dimulai setelah permintaan selesai.
Semoga ini bisa membantu seseorang yang masih mencari jawaban untuk pertanyaan ini.
sumber
Itu diperbaiki di jQuery 2.x; Di jQuery 1.x Anda tidak akan pernah mendapatkan panggilan balik kesalahan
sumber
Saya dihadapkan dengan masalah yang sama, tetapi daripada membuat panggilan balik untuk permintaan yang gagal, saya hanya mengembalikan kesalahan dengan objek data json.
Jika memungkinkan, ini sepertinya solusi termudah. Ini contoh kode Python yang saya gunakan. (Menggunakan Flask, Flask's jsonify f dan SQLAlchemy)
Kemudian Anda dapat memeriksa Javascript seperti ini;
sumber
Kenapa tidak
??
Untuk detail tentang
.fail()
metode yang digunakan (jQuery 1.5+), lihat http://api.jquery.com/jQuery.ajax/#jqXHRKarena
jqXHR
dikembalikan oleh fungsi, seperti rantaiadalah mungkin.
sumber
Dalam beberapa kasus, Anda mungkin mengalami masalah sinkronisasi dengan metode ini. Saya menulis panggilan balik di dalam a
setTimeout
fungsi, dan itu bekerja secara serentak =)MISALNYA:
sumber
Ini adalah utas yang cukup lama, tetapi muncul di pencarian Google, jadi saya pikir saya akan menambahkan jawaban jQuery 3 menggunakan janji. Cuplikan ini juga menunjukkan:
Cuplikan kode adalah:
sumber