Saya telah menerapkan permintaan Ajax di situs web saya, dan saya menelepon titik akhir dari halaman web. Selalu mengembalikan 200 OK , tetapi jQuery mengeksekusi peristiwa kesalahan.
Saya mencoba banyak hal, tetapi saya tidak dapat memecahkan masalahnya. Saya menambahkan kode saya di bawah ini:
Kode jQuery
var row = "1";
var json = "{'TwitterId':'" + row + "'}";
$.ajax({
type: 'POST',
url: 'Jqueryoperation.aspx?Operation=DeleteRow',
contentType: 'application/json; charset=utf-8',
data: json,
dataType: 'json',
cache: false,
success: AjaxSucceeded,
error: AjaxFailed
});
function AjaxSucceeded(result) {
alert("hello");
alert(result.d);
}
function AjaxFailed(result) {
alert("hello1");
alert(result.status + ' ' + result.statusText);
}
Kode C # untuk JqueryOpeartion.aspx
protected void Page_Load(object sender, EventArgs e) {
test();
}
private void test() {
Response.Write("<script language='javascript'>alert('Record Deleted');</script>");
}
Saya membutuhkan ("Record deleted")
string setelah penghapusan berhasil. Saya dapat menghapus konten, tetapi saya tidak mendapatkan pesan ini. Apakah ini benar atau saya melakukan kesalahan? Apa cara yang benar untuk menyelesaikan masalah ini?
TwitterId
, maka Anda harus melewati sebuah objek untukdata
, bukan string:data: {TwitterId: row}
.Jawaban:
jQuery.ajax
mencoba mengonversi badan respons tergantung padadataType
parameter yang ditentukan atauContent-Type
header yang dikirim oleh server. Jika konversi gagal (mis. Jika JSON / XML tidak valid), panggilan balik kesalahan dipecat.Kode AJAX Anda mengandung:
Dalam hal ini jQuery:
Kode sisi server Anda mengembalikan potongan HTML dengan
200 OK
status. jQuery mengharapkan JSON yang valid dan karenanya memunculkan error callback yang dikeluhkanparseerror
.Solusinya adalah menghapus
dataType
parameter dari kode jQuery Anda dan mengembalikan kode sisi server:Tetapi saya lebih suka menyarankan untuk mengembalikan respons JSON dan menampilkan pesan di dalam callback sukses:
sumber
$.ajax
Anda dapat mencoba$.getScript
. Di dalam sisi server script C # cukup masukkanalert('Record Deleted');
(tanpa<script>
tag) dan atur ContentType script C # Andatext/javascript
.$.ajax
mungkin juga bekerja tetapi saya tidak ingat bagaimana, mungkin Anda hanya perlu berubahdataType: 'script',
. Anda mungkin tidak membutuhkan penangan sukses lagi.$.post
. Dalam kasus ini, jquery menebak tipe data, kemudian kesalahan ketika gagal mengurai . Ini adalah gotcha yang benar-benar jahat, sulit ditemukan. Saya memperbaikinya dengan mengatur tipe data ke"text"
.Saya beruntung menggunakan beberapa spasi yang terpisah
dataType
( jQuery 1.5+ ). Seperti dalam:sumber
Anda cukup menghapus dataType: "json" di panggilan AJAX Anda
sumber
Ini hanya untuk catatan karena saya menabrak posting ini ketika mencari solusi untuk masalah saya yang mirip dengan OP.
Dalam kasus saya, permintaan jQuery Ajax saya dicegah agar tidak berhasil karena kebijakan asal yang sama di Chrome. Semua teratasi ketika saya memodifikasi server saya (Node.js) untuk melakukan:
Aku benar-benar menghabiskan satu jam membenturkan kepalaku ke dinding. Saya merasa bodoh ...
sumber
Saya rasa halaman aspx Anda tidak mengembalikan objek JSON. Halaman Anda harus melakukan sesuatu seperti ini (page_load)
Coba juga untuk mengubah AjaxFailed Anda:
textStatus
seharusnya memberi Anda jenis kesalahan yang Anda dapatkan.sumber
Saya telah menghadapi masalah ini dengan perpustakaan jQuery yang diperbarui. Jika metode layanan tidak mengembalikan apa pun, itu berarti jenis pengembaliannya
void
.Kemudian dalam panggilan Ajax Anda, harap sebutkan
dataType='text'
.Itu akan menyelesaikan masalah.
sumber
Anda hanya perlu menghapus
dataType: 'json'
dari tajuk Anda jika metode layanan Web yang Anda terapkan batal.Dalam hal ini, panggilan Ajax jangan berharap untuk memiliki tipe data kembali JSON.
sumber
Gunakan kode berikut untuk memastikan responsnya dalam format JSON (versi PHP) ...
sumber
Saya memiliki masalah yang sama. Masalah saya adalah controller saya mengembalikan kode status daripada JSON. Pastikan pengontrol Anda mengembalikan sesuatu seperti:
sumber
Saya memiliki masalah yang sama tetapi ketika saya mencoba menghapus datatype: 'json' saya masih memiliki masalah. Kesalahan saya adalah mengeksekusi bukannya Sukses
sumber
Hal lain yang membuat saya kacau adalah menggunakan
localhost
bukan 127.0.0.1 atau sebaliknya. Tampaknya, JavaScript tidak dapat menangani permintaan dari satu ke yang lain.sumber
Lihat ini . Masalahnya juga mirip. Bekerja saya mencoba.
Jangan hapus
dataType: 'JSON',
Catatan: gema hanya JSON Formate dalam file PHP jika Anda hanya menggunakan php gema kode ajax Anda kembali 200
sumber
Saya memiliki masalah yang sama. Itu karena respons JSON saya berisi beberapa karakter khusus dan file server tidak dikodekan dengan UTF-8, jadi panggilan Ajax menganggap bahwa ini bukan respons JSON yang valid.
sumber
Jika Anda selalu mengembalikan JSON dari server (tidak ada respons kosong),
dataType: 'json'
harus berfungsi dancontentType
tidak diperlukan. Namun pastikan output JSON ...jQuery AJAX akan melempar 'parseerror' pada JSON yang valid tetapi tidak terverifikasi!
sumber
Skrip Anda menuntut pengembalian dalam tipe data JSON.
Coba ini:
sumber
Coba ikuti
ATAU
Gunakan tanda kutip ganda sebagai ganti tanda kutip tunggal dalam objek JSON. Saya pikir ini akan menyelesaikan masalah.
sumber