jQuery跨域调用WebService举例
html:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>jquery跨域调用WebService(getJson)</title>
<style type="text/css">
*
{
font: 12px 宋体;
margin: 0px;
padding: 0px;
}
body
{
padding: 5px;
}
#container .search
{
height: 20px;
}
#container .result
{
margin-top: 5px;
}
#txtUserName
{
float: left;
}
#btnSearch
{
float: left;
margin: 0px 0px 0px 5px;
width: 78px;
height: 16px;
text-align: center;
line-height: 16px;
background-color: #eee;
border: solid 1px #BABABA;
cursor: pointer;
}
#btnSearch:hover
{
width: 76px;
height: 14px;
line-height: 14px;
background-color: #fff;
border-width: 2px;
}
.mark
{
color: Blue;
}
</style>
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
//用户信息(全局)
var userData = {
//WebServices地址(GetUserList=方法名称,?jsoncallback=?--必须包含)
requestUrl: "http://localhost:54855/PersonalServices.asmx/GetUserList?jsoncallback=?",
//方法参数(用户名可用","分隔开来查询多个用户信息)
requestParams: { userName: null },
//回调函数
requestCallBack: function (json) {
if (json.ResponseStatus == 1) {//成功获取数据
var addRow = function (key, value) {
return "<span>" + key + ":</span><span class=\"mark\">" + value + "</span><br/>";
}
userData.resultData = json.ResponseData;
var resultHtml = "";
$(userData.resultData).each(function () {
resultHtml += addRow("姓名", this.Name);
resultHtml += addRow("年龄", this.Age);
resultHtml += addRow("性别", this.Sex);
resultHtml += addRow("备注", this.Remark);
resultHtml += "<br/>";
});
$(".result").html(resultHtml);
} else $(".result").html(json.ResponseDetails); //无数据或者后台处理失败!
},
//查询得到的数据
resultData: null
};
$(function () {
//绑定文本框的键盘事件
$("#txtUserName").keyup(function () {
if ($.trim($(this).val()) == "") {
$(".result").html("请输入查询用户名!");
} else {
userData.requestParams.userName = $(this).val();
$(".result").html("");
}
});
//绑定查询按钮单机事件
$("#btnSearch").click(function () {
if (userData.requestParams.userName) {
$.getJSON(userData.requestUrl, userData.requestParams, userData.requestCallBack);
}
});
});
</script>
</head>
<body>
<form id="form1" runat="server">
<div id="container">
<div class="search">
<input type="text" id="txtUserName" /><div id="btnSearch">
查 询</div>
</div>
<div class="result">
</div>
</div>
</form>
</body>
</html>

WebServices.cs

using System;
using System.Collections.Generic;
using System.Web;
using System.Web.Services;
#region 命名空间 using Newtonsoft.Json; #endregion namespace WebService
{
/// <summary>
/// PersonalServices 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class PersonalServices : System.Web.Services.WebService
{
#region 获取用户信息 [WebMethod]
public void GetUserList(string userName)
{
List<Personal> m_PersonalList = new List<Personal>();
string[] strArr = userName.Split(',');
foreach (string item in strArr)
{
Personal m_Personal = GetUserByName(item);
if (m_Personal != null)
{
m_PersonalList.Add(m_Personal);
}
}
ResponseResult responseResult = new ResponseResult();
if (m_PersonalList.Count == )
{
responseResult.ResponseDetails = "没有查到该用户!";
responseResult.ResponseStatus = ;
}
else
{
responseResult.ResponseData = m_PersonalList;
responseResult.ResponseDetails = "查询用户信息成功!";
responseResult.ResponseStatus = ;
}
string jsoncallback = HttpContext.Current.Request["jsoncallback"];
//返回数据的方式
// 其中将泛型集合使用了Json库(第三方序列json数据的dll)转变成json数据字符串
string result = jsoncallback + "(" + JsonConvert.SerializeObject(responseResult, Formatting.Indented) + ")";
HttpContext.Current.Response.Write(result);
HttpContext.Current.Response.End();
} #endregion #region 模拟数据库处理结果 /// <summary>
/// 根据用户名查询用户
/// </summary>
/// <param name="userName">用户名</param>
/// <returns></returns>
Personal GetUserByName(string userName)
{
List<Personal> m_PersonalList = new List<Personal>();
m_PersonalList.Add(new Personal()
{
Id = "",
Name = "liger_zql",
Sex = "男",
Age = ,
Remark = "你猜......"
});
m_PersonalList.Add(new Personal()
{
Id = "",
Name = "漠然",
Sex = "女",
Age = ,
Remark = "猜不透......"
});
foreach (Personal m_Personal in m_PersonalList)
{
if (m_Personal.Name == userName)
{
return m_Personal;
}
}
return null;
} #endregion #region json数据序列化所需类 /// <summary>
/// 处理信息类
/// ResponseData--输出处理数据
/// ResponseDetails--处理详细信息
/// ResponseStatus--处理状态
/// -1=失败,0=没有获取数据,1=处理成功!
/// </summary>
class ResponseResult
{
public List<Personal> ResponseData { get; set; }
public string ResponseDetails { get; set; }
public int ResponseStatus { get; set; }
} /// <summary>
/// 用户信息类
/// </summary>
class Personal
{
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public string Sex { get; set; }
public string Remark { get; set; }
} #endregion
}
}

WebService项目配置文件

<system.web>
<!--提供Web服务访问方式-->
<webServices>
<protocols>
<add name="HttpSoap"/>
<add name="HttpPost"/>
<add name="HttpGet"/>
<add name="Documentation"/>
</protocols>
</webServices>
</system.web>

由于使用jquery.getJson的方式调用Web服务后,传递中文时会造成中文乱码问题:

所以在配置文件中应配置如下内容:

<system.web>
<!-- 设定传参乱码问题 -->
<globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8"/>
</system.web>

调用截图如下:

最后附上源码:JqCrossDomain.zip

jQuery跨域调用WebService的更多相关文章

  1. jquery跨域调用wcf

    使用jquery跨域调用wcf服务的时候会报如下错误 $.ajax({ url: 'http://localhost:28207/Service1.svc/GetData', method: 'get ...

  2. 跨域调用webservice

    本人第一次在博客园写博客. 最近研究js的跨域调用,举个小例子. ASP.net 中webservice 源代码 /// <summary>    /// Service1 的摘要说明   ...

  3. jQuery跨域调用Web API

    我曾经发表了一篇关于如何开发Web API的博客,链接地址:http://www.cnblogs.com/guwei4037/p/3603818.html.有朋友说开发是会开发了,但不知道怎么调用啊? ...

  4. Jquery跨域调用

    今天在项目中须要做远程数据载入并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发现JQuer ...

  5. ajax跨域调用webservice例子

    [WebMethod(Description = "这是一个描述")] public void GetTIM() { try { SqlDataAdapter da = new S ...

  6. Jquery跨域调用后台方法

    //前端JS function CallHandlerByJquery() { var url = "http://" + window.location.hostname + & ...

  7. ajax使用jsonp跨域调用webservice error错误信息"readyState":4,"status":200,"statusText":"success"

    主要还是接口写有问题 至于ajax保持简洁写法即可 $.ajax({ dataType: 'jsonp', type: ‘get’, data: {}, url: '' })

  8. jquery Ajax跨域调用WebServices方法

    由于公司需要开发一个手机页面,想提供给同事直接在手机上可以查询SAP资料.数据需要使用js调用webserver来获取. 因为初次使用Jquery调用Webserver,所以期间并不顺利.测试调用We ...

  9. Jquery的跨域调用

    JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念.当然,究其本质还是通过script标签动态加载js,似乎这是实现真正跨域的唯一方法. getJSON ...

随机推荐

  1. Git----拉取远程分支,git pull,git rebase,git pull --rebase的区别

    git pull 相当于自动的 fetch 和 merge 操作,会试图自动将远程库合并入本地库,在有冲突时再要求手动合并. git rebase 可以确保生产分支commit是一个线性结构,方便ro ...

  2. python 正则表达式特殊字符

    字符 描述 \ 将下一个字符标记为一个特殊字符.或一个原义字符.或一个 向后引用.或一个八进制转义符.例如,'n' 匹配字符 "n".'\n' 匹配一个换行符.序列 '\\' 匹配 ...

  3. Spring Cloud Eureka 注册中心高可用机制

    一.Eureka 正常工作流程 Service 服务作为 Eureka Client 客户端需要在启动的时候就要向 Eureka Server 注册中心进行注册,并获取最新的服务列表数据. Eurek ...

  4. Base 编解码(转)

    private static final char[] legalChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0 ...

  5. 记录从裸机到TensorFlow GPU版运行 的配置过程

    实验室原来有一台装Ubuntu Server系统的服务器,安装有tensorflow,在使用过程中经常出现断网.死机.自动关机等毛病,忍无可忍,决定重装系统 配置如下:Dell工作站,Xeon-E5 ...

  6. HTML 007 链接

    HTML 链接 HTML 使用超级链接与网络上的另一个文档相连.几乎可以在所有的网页中找到链接.点击链接可以从一张页面跳转到另一张页面. 尝试一下 - 实例 HTML 链接如何在HTML文档中创建链接 ...

  7. mysql数据库中锁机制的详细介绍

    悲观锁与乐观锁: 悲观锁:顾名思义,就是很悲观,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会block直到它拿到锁.传统的关系型数据库里边就用到了很多这 ...

  8. Greenplum 调优--VACUUM系统表

    Greenplum 调优--VACUUM系统表 1.VACUUM系统表原因 Greenplum是基于MVCC版本控制的,所有的delete并没有删除数据,而是将这一行数据标记为删除, 而且update ...

  9. 关于request.getServletPath(),request.getContextPath()的总结

    1. getServletPath():获取能够与“url-pattern”中匹配的路径,注意是完全匹配的部分,*的部分不包括. 2.getContextPath():获取项目的根路径

  10. java上传超大文件

    上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败. 一开始以为是session过期或者文件大小受系统限制,导致的错误.查看了系统的配置文件没有看到文件大小限制,web.xml中sees ...