本文主要为大家详细介绍了jQuery ajax调用webservice的注意事项,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。
jquery ajax调用webservice(C#)要注意的几个事项:
1、web.config里需要配置2个地方
<httpHandlers> <remove verb="*" path="*.asmx"/> <add verb="*" path="*.asmx" validate="false" type="System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> </httpHandlers>
在2dc15ec6bc814c3aa45b55d017848bed4ec4537ca3582453b3a7c44816bcf480之间加入
<webServices> <protocols> <add name="HttpPost" /> <add name="HttpGet" /> </protocols> </webServices>
2.正确地编写webserivce的代码
/// <summary> /// UserValidate 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 [System.Web.Script.Services.ScriptService] public class UserValidate : System.Web.Services.WebService { DFHon.Content.Common.rootPublic rp = new DFHon.Content.Common.rootPublic(); [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string ValidateUserLogState() { string result = ""; HttpCookie cookie = HttpContext.Current.Request.Cookies["DHFonMenberInfo"]; if (cookie != null) { string username = System.Web.HttpUtility.UrlDecode(cookie["MenberName"]); int ipoint = 0; int gpoint = 0; try { DataTable dt = UserBll.ExecuteUserAllInfo(username); if (dt.Rows.Count > 0) { ipoint = int.Parse(dt.Rows[0]["iPoint"].ToString()); gpoint = int.Parse(dt.Rows[0]["gPoint"].ToString()); } } catch { } result = "{'user':{'id':'" + cookie["UserId"] + "','name':'" + username + "','message':'" + rp.getUserMsg(DFHon.Global.CurrentCookie.UserName) + "','ipoint':'" + ipoint.ToString() + "','gpoint':'" + gpoint.ToString() + "'}}"; } else { result = "{'user':{'id':'0','name':'','message':'0','ipoint':'0','gpoint':'0'}}"; } return result; } [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string UserLogin(string userName, string userPwd) { string returnVal = ""; try { GlobalUserInfo info; DFHon.Content.UserLogin _UserLogin = new DFHon.Content.UserLogin(); EnumLoginState state = _UserLogin.PersonLogin(HttpUtility.UrlDecode(userName), userPwd, out info); if (state == EnumLoginState.Succeed) { DFHon.Global.CurrentCookie.Set(info); DFHon.API.PDO.DiscuzNT.PassportLogin.UserLogin(Server.UrlDecode(userName), userPwd, -1); int ipoint = 0; int gpoint = 0; DataTable dt = UserBll.ExecuteUserAllInfo(userName); if (dt.Rows.Count > 0) { ipoint = int.Parse(dt.Rows[0]["iPoint"].ToString()); gpoint = int.Parse(dt.Rows[0]["gPoint"].ToString()); } returnVal = "{'user':{'id':'" + info.UserId.ToString() + "','name':'" + info.UserName + "','message':'" + rp.getUserMsg(userName) + "','ipoint':'" + ipoint.ToString() + "','gpoint':'" + gpoint.ToString() + "'}}"; } else { int ids = 0;//状态:-2用户被锁定 -1用户名密码错误 switch (state) { case EnumLoginState.Err_Locked: ids = -2; break; case EnumLoginState.Err_UserNameOrPwdError: ids = -1; break; default: break; } returnVal = "{'user':{'id':'" + ids + "','name':'','message':'0','ipoint':'0','gpoint':'0'}}"; } } catch { returnVal = "{'user':{'id':'0','name':'','message':'0','ipoint':'0','gpoint':'0'}}"; } return returnVal; } [WebMethod] public string UserLogout() { if (HttpContext.Current.Request.Cookies["DHFonMenberInfo"] != null) { HttpCookie cookie = new HttpCookie("DHFonMenberInfo"); cookie.Expires = System.DateTime.Now.AddDays(-1); cookie.Domain = DFHon.Config.BaseConfig.getV("weblogin"); HttpContext.Current.Response.AppendCookie(cookie); } return "1"; } DFHon.Content.user UserBll = new DFHon.Content.user(); [WebMethod] public string ValidateUserEmail(string email) { string result = "0";//返回的结果 -2邮箱为空 -1邮箱格式不正确 0邮箱存在 1填写正确 if (string.IsNullOrEmpty(email)) { result = "-2";//邮箱为空 } else if (!IsValidEmail(email)) { result = "-1";//邮箱格式不正确 } else if (UserBll.sel_useremail(email) > 0) { result = "0";//邮箱存在 } else { result = "1";//可以注册 } return result; } [WebMethod] public string ValidateUserName(string username) { string result = "0";//返回值:-1用户名长度为2-16;0用户名存在;1可以注册 if (username == "" || username == null || username.Length < 2 || username.Length > 16) { result = "-1"; } else if (UserBll.sel_username(username) != 0) { result = "0"; } else { result = "1"; } return result; } public bool IsValidEmail(string strIn) { // Return true if strIn is in valid e-mail format. return System.Text.RegularExpressions.Regex.IsMatch(strIn, @"^([\w-\.]+)@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.)|(([\w-]+\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\]?)$"); } }
WebService
<script> $(function() { $("#userloging").show(); //登录框处理开始 //加载登录状态 $.ajax({ type: "POST", //访问WebService使用Post方式请求 contentType: "application/json;charset=utf-8", //WebService 会返回Json类型 url: "/API/Service/UserValidate.asmx/ValidateUserLogState", //调用WebService data: "{}", //Email参数 dataType: 'json', beforeSend: function(x) { x.setRequestHeader("Content-Type", "application/json; charset=utf-8"); }, error: function(x, e) { }, success: function(response) { //回调函数,result,返回值 $("#userloging").hide(); var json = eval('(' + response.d + ')'); var userid = json.user.id; if (userid > 0) { $("#spanusername").html(json.user.name); $("#spanmessagenum").html(json.user.message); $("#userloginsucced").show(); $("#userloginbox").hide(); } } }); //登录 $("#userlogbutton").click(function() { var username = $("#username").val(); var userpwd = $("#userpassword").val(); if (username != "" && userpwd != "") { $("#userloging").show(); $.ajax({ type: "POST", //访问WebService使用Post方式请求 contentType: "application/json;charset=utf-8", //WebService 会返回Json类型 url: "/API/Service/UserValidate.asmx/UserLogin", //调用WebService data: "{userName:'" + username + "',userPwd:'" + userpwd + "'}", //Email参数 dataType: 'json', beforeSend: function(x) { x.setRequestHeader("Content-Type", "application/json; charset=utf-8"); }, error: function(x, e) { }, success: function(result) { //回调函数,result,返回值 $("#userloging").hide(); var json = eval('(' + result.d + ')'); var userid = json.user.id; if (userid > 0) { $("#spanusername").html(json.user.name); $("#spanmessagenum").html(json.user.message); $("#userloginsucced").show(); $("#userloginbox").hide(); } else { switch (userid) { case -2: alert("用户被锁定!请30分钟后再登录!"); $("#username").focus(); break; case -1: alert("用户名或密码错误!请核对您的用户名和密码!"); $("#userpassword").focus(); break; default: alert("登录失败!请核对您的用户名和密码之后重试!"); $("#userpassword").focus(); break; } } } }); } else if (username == "") { alert("用户名不能为空!"); $("#username").focus(); } else if (userpwd == "") { alert("密码不能为空!"); $("#userpassword").focus(); } }); //退出 $("#logout").click(function() { $("#userloging").show(); $.ajax({ type: "POST", //访问WebService使用Post方式请求 contentType: "application/json;utf-8", //WebService 会返回Json类型 url: "/API/Service/UserValidate.asmx/UserLogout", //调用WebService data: "{}", //Email参数 dataType: 'json', beforeSend: function(x) { x.setRequestHeader("Content-Type", "application/json; charset=utf-8"); }, success: function(result) { //回调函数,result,返回值 $("#userloging").hide(); if (result.d > 0) { $("#userloginsucced").hide(); $("#userloginbox").show(); } } }); }); //登录框处理结束 }); </script>
相关推荐:
Ajax请求WebService跨域问题的解决方案
js跨域调用WebService的简单实例
Atas ialah kandungan terperinci ajax调用webservice需要注意哪些. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Python lebih sesuai untuk pemula, dengan lengkung pembelajaran yang lancar dan sintaks ringkas; JavaScript sesuai untuk pembangunan front-end, dengan lengkung pembelajaran yang curam dan sintaks yang fleksibel. 1. Sintaks Python adalah intuitif dan sesuai untuk sains data dan pembangunan back-end. 2. JavaScript adalah fleksibel dan digunakan secara meluas dalam pengaturcaraan depan dan pelayan.

Python dan JavaScript mempunyai kelebihan dan kekurangan mereka sendiri dari segi komuniti, perpustakaan dan sumber. 1) Komuniti Python mesra dan sesuai untuk pemula, tetapi sumber pembangunan depan tidak kaya dengan JavaScript. 2) Python berkuasa dalam bidang sains data dan perpustakaan pembelajaran mesin, sementara JavaScript lebih baik dalam perpustakaan pembangunan dan kerangka pembangunan depan. 3) Kedua -duanya mempunyai sumber pembelajaran yang kaya, tetapi Python sesuai untuk memulakan dengan dokumen rasmi, sementara JavaScript lebih baik dengan MDNWebDocs. Pilihan harus berdasarkan keperluan projek dan kepentingan peribadi.

Peralihan dari C/C ke JavaScript memerlukan menyesuaikan diri dengan menaip dinamik, pengumpulan sampah dan pengaturcaraan asynchronous. 1) C/C adalah bahasa yang ditaip secara statik yang memerlukan pengurusan memori manual, manakala JavaScript ditaip secara dinamik dan pengumpulan sampah diproses secara automatik. 2) C/C perlu dikumpulkan ke dalam kod mesin, manakala JavaScript adalah bahasa yang ditafsirkan. 3) JavaScript memperkenalkan konsep seperti penutupan, rantaian prototaip dan janji, yang meningkatkan keupayaan pengaturcaraan fleksibiliti dan asynchronous.

Enjin JavaScript yang berbeza mempunyai kesan yang berbeza apabila menguraikan dan melaksanakan kod JavaScript, kerana prinsip pelaksanaan dan strategi pengoptimuman setiap enjin berbeza. 1. Analisis leksikal: Menukar kod sumber ke dalam unit leksikal. 2. Analisis Tatabahasa: Menjana pokok sintaks abstrak. 3. Pengoptimuman dan Penyusunan: Menjana kod mesin melalui pengkompil JIT. 4. Jalankan: Jalankan kod mesin. Enjin V8 mengoptimumkan melalui kompilasi segera dan kelas tersembunyi, Spidermonkey menggunakan sistem kesimpulan jenis, menghasilkan prestasi prestasi yang berbeza pada kod yang sama.

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

PhpStorm versi Mac
Alat pembangunan bersepadu PHP profesional terkini (2018.2.1).

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

DVWA
Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft