Hari ini, ketika saya menggunakan metode AJAX JQuery untuk mengirim permintaan, saya menemukan bahwa menggunakan file Ashx di latar belakang tidak dapat menerima parameter yang dilewati dalam metode AJAX. Setelah memeriksa alasannya secara online, saya menemukan masalahnya. Ternyata saya menentukan "ContentType: 'Application/json; charset = utf8'" dalam metode $ .AJAX, yang menyebabkan parameter diteruskan ke server saat memproses permintaan dalam file Ashx.
Cara yang benar untuk menulisnya adalah sebagai berikut:
$ .Ajax ({url: '/handler.ashx?operflag=test',type:' Post ',/*Saat meminta file ashx, Anda harus menghapus contentType, dan format data adalah {"key", "value"}; Ingat untuk tidak menambahkan page double di luar breaces, karena ini akan gagal jika data tidak dapat diukur; charset = utf ', data: {"key": "xdp", "key": "Lonely Wolf"}, cache: false, dataType:' text ', Success: function (data) {waspada (data);}, kesalahan: function (xhr) {waspada ("kesalahan terjadi, coba lagi nanti:" + xHr.respons) {wadah ("kesalahan terjadi;}, silakan coba lagi:" + xHr.REPON.Dengan cara ini, Anda dapat menggunakan kode berikut dalam file Ashx untuk mendapatkan parameter yang dilewati dengan metode $ .AJAX, kode tersebut adalah sebagai berikut:
string key = context.Request ["key"]; string key = context.Request ["key"];
Saya dulu menggunakan metode $ .post untuk menangani AJAX, jadi saya tidak melihat masalah ini. Kali ini, karena diminta oleh proyek, saya menggunakan $. AJAX. Saya tidak berharap untuk menghadapi masalah di atas. Untungnya, saya menemukan masalah dan menyelesaikan masalah dalam waktu.
Selain itu, saya telah mengalami masalah aneh baru -baru ini, "setelah mengirimkan data ke Ashx menggunakan AJAX, dan setelah memformat parameter dengan json.stringify, kodenya adalah sebagai berikut:
$.ajax({url: '/Handler.ashx?operFlag=test',type: 'POST',//JSON.stringify format parameter data: JSON.stringify({"key": "xdp-gacl","key": "White Tiger God Emperor"}),contentType: 'application/json; charset=utf',cache: false,dataType: 'json', Success: function (data) {waspada (data.key + "|" + data.key);}, error: function (xhr) {alert ("Terjadi kesalahan, coba lagi nanti:" + xhr.Responsetext);}});Akibatnya, metode normal menggunakan Context.request ["Key3"] di Ashx tidak dapat memperoleh parameter, seperti yang ditunjukkan pada gambar di bawah ini:
Saya tertekan untuk waktu yang lama dan tidak tahu mengapa ini terjadi. Awalnya saya pikir itu disebabkan oleh kode ContentType: 'Aplikasi/JSON; charset = utf8 ', jadi saya mengomentari kode:
$ .Ajax ({url: '/handler.ashx?operflag=test',type:' Post ', // json.stringify format Parameter Data: json.stringify ({"key": "xdp-gacl", "Key": "White Tiger God Emperor"}), // ContentType:' 'json', Success: function (data) {waspada (data.key + "|" + data.key);}, error: function (xhr) {alert ("Terjadi kesalahan, coba lagi nanti:" + xhr.Responsetext);}});Tapi hasilnya masih sama. Menggunakan Context.Request ["Key3"] masih belum bisa mendapatkan parameter. Tidak ada cara. Karena metode konvensional tidak dapat diperoleh, maka cari metode lain. Baidu menemukan solusi. Anda bisa mendapatkannya dengan menggunakan metode berikut di Ashx. Pertama, tulis metode umum untuk mendapatkan parameter, kodenya adalah sebagai berikut:
/// <summary> /// Dapatkan parameter /// </summary> /// <param name = "context"> </param> // <returns> </returns> kamus pribadi <string, objek> getParameter (httpcontext konteks) {streamReader reader = new streamReader (context.request. strJson={"key":"xdp-gacl","key":"White Tiger God Emperor"}String strJson = HttpUtility.UrlDecode(reader.ReadToEnd());JavaScriptSerializer jss = new JavaScriptSerializer();//Deserialize the json string into a Dictionary objectDictionary<String, Object> dicParameter = jss.deserialize <kamus <string, objek >> (strjson); return dicparameter;}Metode GetParameter mengembalikan objek dicarameter, dan dicarameter menyimpan parameter yang dikirimkan dari metode $. AJAX ke Ashx, seperti yang ditunjukkan pada gambar di bawah ini:
Dengan cara ini, parameter yang diteruskan dapat dikeluarkan dari dicarameter untuk diproses. Kode lengkapnya adalah sebagai berikut:
public void ProcessRequest (konteks httpcontext) {context.Response.contentType = "text/polos"; string operag = context.Request ["operFlag"]; if (operflag == "test") {string key = context.request ["KEY"]; string KEY = Context.Request ["KEY"]; KUNCI; + key; context.Response.write (resstr);} else if (operflag == "test") {kamus <string, objek> dicparameter = getParameter (konteks); string kunci = dicarameter ["KUNCI"]. TOSTRING (); string kunci = DicParameter ["KUNCI"]. "" "/",/"key/":/"" + key + "/"}";context.response.write(restr);}}Di atas adalah data yang dikirim oleh file Ashx yang diperoleh dengan metode $ .AJAX () yang diperkenalkan oleh editor. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!