Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Apakah punca ralat ajax?
Punca ralat ajax: 1. Jenis dataType yang salah 2. Format json yang salah 3. Terdapat masalah dengan tetapan segerak dan tak segerak 4. Nilai parameter data tidak ditetapkan; 5. Terdapat masalah dengan format pengekodan parameter yang diluluskan ;6 Terdapat aksara Cina dalam laluan URL.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi jquery 1.10.2, komputer Dell G3.
Kod ajax jquery standard:
$.ajax({ type: 'POST', url: 'getSecondClassification', data: {"sort2": sort2,"sort3":sort3)}, dataType: 'json', //contentType:"utf-8",发送请求的编码方式 //contentType都是默认的值:application/x-www-form-urlencoded contentType: 'application/json', data: JSON.stringify({a: [{b:1, a:1}]}) success: function (sort) { $("#noneSelect").remove(); var optionstring = ""; for (var i in sort) { optionstring += "<option value=\"" + sort[i].classId + "\" >" + sort[i].className + "</option>"; } $("#secondtype").html(optionstring); $("#build").removeAttr("disabled"); }, error: function (XMLHttpRequest, textStatus, errorThrown) { // $("#p_test").innerHTML = "there is something wrong!"; // alert(XMLHttpRequest.status); // alert(XMLHttpRequest.readyState); // alert(textStatus); } });
Sebarang ralat akan melompat ke fungsi ralat
Contoh beberapa ralat menyebabkan:
1. DataType error
Ralat taip: Jenis data yang dikembalikan oleh latar belakang tidak konsisten dengan yang ditulis di hadapan desk dan akan melompat ke ralat
Ralat format: jquery1.4 mempunyai keperluan format yang sangat ketat untuk json, dan ralat format json juga akan melompat kepada ralat.{"test":1} Perhatikan format
Kadangkala, apabila tidak Jika anda perlu memulangkan nilai, ikut format templat dan tetapkan parameter dataType: "json" Pada masa ini, apabila nilai ajax betul, akan berlaku situasi khas di mana ralat dilaporkan dalam status kejayaan 200 pulangan.
2. Isu segerak dan tak segerak dengan permintaan tak segerak
Async lalai kepada benar (permintaan tak segerak selepas itu). ia dilaksanakan, Untuk Ajax, anda perlu menetapkan async=false
Contohnya, anda menggunakan permintaan siaran untuk menghantar nilai ke latar belakang halaman lain, tetapi ajax anda telah dilaksanakan sebaik sahaja halaman dimuatkan, dan penerimaan nilai selesai di latar belakang , data tidak boleh diminta pada masa ini, jadi anda boleh mempertimbangkan untuk menukar permintaan ajax kepada cubaan segerak.
3. Data mesti ditulis
Jika data kosong, anda mesti menghantar "{}" jika tidak, data yang dikembalikan ialah dalam format xml. Dan menggesa parsererror.data:"{}"
Pengecualian parsererror juga berkaitan dengan jenis Pengepala. dan pengekodan pengekodan('Content-type: text/html; charset=utf8');
4. Parameter yang diluluskan
mestilah Format pengekodan yang disokong Ajax
5. Masalah laluan URL
Laluan tidak boleh mempunyai aksara Cina
Gunakan ralat untuk nyahpepijat mesej ralat:
Anda boleh memaklumkannya untuk melihat apa yang telah berlaku
Parameter khusus:
XMLHttpRequest:XMLHttpRequest.readyState: 状态码的意思 0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了
XMLHttpRequest: XMLHttpRequest.status:
textStatus: Sebab ralat
errorThrown: (pilihan) objek ralat yang ditangkap
[Cadangan tutorial berkaitan: Tutorial video AJAX]
Atas ialah kandungan terperinci Apakah punca ralat ajax?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!