跨域调用webservice
本人第一次在博客园写博客。
最近研究js的跨域调用,举个小例子。
ASP.net 中webservice 源代码
/// <summary>
/// Service1 的摘要说明
/// </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 Service1 : System.Web.Services.WebService
{
[WebMethod]
public void GetProduct(string no)
{
List<Product> list = new List<Product>();
DataSet ds = GetDs("MYDB", "select ProductCode,fCurQty from StorageTotal where StorageID=1 and CurQty>0 and ProductCode like '%" + no + "%' order by ProductCode");
foreach (DataRow dr in ds.Tables[0].Rows)
{
list.Add(new Product() { Code = dr["ProductCode"].ToString(), Qty = Convert.ToInt32(dr["fCurQty"]) });
}
ResponseResult responseResult = new ResponseResult();
if (list.Count == 0)
{
responseResult.ResponseDetails = "没有查到匹配的纪录!";
responseResult.ResponseStatus = 0;
}
else
{
responseResult.ResponseData = list;
responseResult.ResponseDetails = "查询库存信息成功!";
responseResult.ResponseStatus = 1;
}
string jsoncallback = HttpContext.Current.Request["jsoncallback"];
string result = jsoncallback + "(" + JsonConvert.SerializeObject(responseResult, Formatting.Indented) + ")";
HttpContext.Current.Response.Write(result);
HttpContext.Current.Response.End();
}
2.html 页面跨域调用方式
<script type="text/javascript">
var userData = {
requestUrl: "http://oa.nextorch.com/WebService/Service1.asmx/GetProduct?jsoncallback=?",
requestParams: { no: null },
requestCallBack: function (json) {
if (json.ResponseStatus == 1) {
userData.resultData = json.ResponseData;
var resultHtml = "";
$(userData.resultData).each(function () {
resultHtml += "编号" + this.Code;
resultHtml += " 数量" + this.Qty;
resultHtml += "<br/>";
});
$(".result").html(resultHtml);
} else $(".result").html(json.ResponseDetails);
},
resultData: null
};
$(function () {
$("#btnSearch").click(function () {
userData.requestParams.no = $("#txtValue").val();
$.getJSON(userData.requestUrl, userData.requestParams, userData.requestCallBack);
});
});
</script>