webservice 代码
1 ????/// <summary> 2 ????/// MESService 的摘要说明 3 ????/// </summary> 4 ????[WebService(Namespace = "http://tempuri.org/")] 5 ????[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] 6 ????//[System.ComponentModel.ToolboxItem(false)] 7 ????// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 ?8 ????[System.Web.Script.Services.ScriptService] 9 ????public class MESService : System.Web.Services.WebService10 ????{11 12 ????????[WebMethod(Description = "")]13 ????????public string GetDataReturnStr(string strXML)14 ????????{15 ????????????//你的结果处理16 ????????????#region 处理数据17 18 ????????????#endregion19 ????????????return Common.JsonHelper.SerializeToJson(new Student() { id = "1", name = "测试" });20 ????????}21 22 ???????23 ????}24 ????[Serializable]25 ????public class Student26 ????{27 ????????public string id { get; set; }28 ????????public string name { get; set; }29 ????}
webservice 文件中需要添加的信息
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 ?[System.Web.Script.Services.ScriptService]
WebConfig 文件中需要添加节点
1、解决跨域访问的问题
<system.webServer> ???<!--解决跨域请求 --> ???<httpProtocol> ?????<customHeaders> ???????<add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET" /> ???????<add name="Access-Control-Allow-Headers" value="x-requested-with,content-type" /> ???????<add name="Access-Control-Allow-Origin" value="*" /> ?????</customHeaders> ???</httpProtocol></system.webServer>
2、解决本地调用成功,外网调用失败的问题。
<system.web> ???<webServices> ?????<protocols> ???????<add name="HttpSoap"/> ???????<add name="HttpPost"/> ???????<add name="HttpGet"/> ???????<add name="Documentation"/> ?????</protocols> ???</webServices></system.web>
Ajax 代码
1 $.ajax({ 2 ????????????????async: true, 3 ????????????????type: "post", 4 ????????????????url: "http://localhost:41453/IDataServer/MESService.asmx/GetDataReturnStr", 5 ????????????????data: "{strXML:‘123123123‘}", 6 ????????????????dataType: "json", 7 ????????????????contentType: "application/json; charset=utf-8", 8 ????????????????success: function (json) { 9 ????????????????????var dataObj = eval("(" + json.d + ")");10 ????????????????????alert(dataObj.id + ‘\r\n‘ + dataObj.name);11 ????????????????},12 ????????????????error: function () {13 14 ????????????????},15 ????????????????complete: function () {16 ????????????????}17 ????????????});
这样就可以实现 ajax 访问webservice接口了
Ajax 调用webservice 解决跨域请求和发布到服务器后本地调用成功外网失败的问题
原文地址:https://www.cnblogs.com/yuchenlove/p/8403498.html