在网上找了很多方案都是不完全的,出现各种各样的问题,于是自己就总结了一个完整的代码,代码如下:
1.request JS代码
$.ajax({
type: "POST", //访问WebService使用Post方式请求
contentType: "application/json", //WebService 会返回Json类型
url: "http://www.kiki.com/WebServices/SecurityWebService.asmx/SynchroDataWebAPI", //调用WebService的地址和方法名称组合 ---- WsURL/方法名
data: "{id:'123'}", //这里是要传递的参数,格式为 data: "{paraName:paraValue}"
dataType: 'json', //返回数据类型
success: function (result) { //回调函数,result,返回值
var data = JSON.parse(result.d);
if (data.Code == 1) {
alert("同步成功!");
return;
}
},
error: function (result) {
alert("操作失败!" + result);
}
});
2.服务器MVC 路由配置
3.服务器webservices代码
起名为:SecurityWebService.asmx
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Services;
using System.Data;
namespace DemoWeb.WebServices
{
/// <summary>
/// WebService1 的摘要说明
/// </summary>
[WebService(Namespace = "http://192.168.1.115:8888/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。
[System.Web.Script.Services.ScriptService]
public class SecurityWebService : System.Web.Services.WebService
{
[WebMethod]
public string SynchroDataWebAPI(string id)
{
int code = 1; //返回结果
string msg = ""; //返回结果
string operationPass = "";
try
{
if (id == "123")
{
//此处写同步数据的代码
}
else
{
code = 1;
msg = "对不起,您没有权限操作!";
}
}
catch (Exception ex)
{
code = 1;
msg = "WebService同步信息失败!";
}
string result = "{\"Code\":\"" + code + "\",\"Msg\":\"" + msg + "\"}";
return result;
}
}
}
4.服务器web.config配置
<system.web>
<webServices>
<protocols>
<add name= "HttpSoap" />
<add name= "HttpPost" />
<add name= "HttpGet" />
<add name="Documentation"/>
</protocols>
</webServices>
</system.web>
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Methods" value="OPTIONS,POST,GET"/>
<add name="Access-Control-Allow-Headers" value="content-type"/>
<add name="Access-Control-Allow-Origin" value="*" /><!--表示允许所有来源进行跨域访问,可指定域名,例如:http://192.168.1.115:8888-->
</customHeaders>
</httpProtocol>
</system.webServer>
5.服务器 IIS HTTP响应头设置
HTTP 响应标头 名称:X-Powered-By 值: ASP.NET
到这里就结束了,希望可以帮助到您!
喜欢我的文章就关注一下我吧,谢谢~