C# jquery webservices 跨域调用的问题解决方案
前台代码:
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
$('#getString').click(function() {
$.ajax({
url: url + "jQueryMobile.asmx/GetProjInfoList?jsoncallback=?", //webservice总返回Json数据的方法
type: 'POST',
data: {UserId:'majunfei'},
//contentType: "application/json",
dataType: "json",
success: function(res) {
//alert(res);
// var strRet = res.d; //Net3.5
alert(res.result);
strRet = $.parseJSON(res); //eval("(" + strRet + ")");
var b_ok = strRet.success;
var strInfo = strRet.info;
alert(strInfo);
$.each(strRet.rows, function(index, row) {
alert(row.proj_code);
alert(row.proj_name)
});
//data = $.parseJSON(''+data+'');//jquery1.4
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
$("div").html(textStatus);
$("div").append("<br/>status:" + XMLHttpRequest.status);
$("div").append("<br/>readyState:" + XMLHttpRequest.readyState);
$("div").append("<br/>responseText:" + XMLHttpRequest.responseText);
}
});
// var clientUrl = "http://172.20.1.71:8099/jQueryMobile.asmx/GetProjInfoList?jsoncallback=?";
// $.getJSON(
// clientUrl,
// { UserId: 'majunfei' },
// function(json) {
// alert(json.result);
// // $("#data").html("城市:" + json.city + ",时间:" + json.dateTime);
// }
// );
// $.ajax({
// url: clientUrl,
// dataType: "jsonp",
// data : {UserId: 'majunfei'},
// success : OnSuccess,
// error : OnError
// }); // function OnSuccess(responseData) {
// alert(responseData.result);
// // $("#data").html(responseData.city);
// }
// function OnError(XMLHttpRequest, textStatus, errorThrown) {
// targetDiv = $("#data");
// if (errorThrown || textStatus == "error" || textStatus == "parsererror" || textStatus == "notmodified") {
// targetDiv.replaceWith("请求数据时发生错误!");
// return;
// }
// if (textStatus == "timeout") {
// targetDiv.replaceWith("请求数据超时!");
// return;
// }
// } // $.ajax({
// type: "get",
// // data: "{UserId:'majunfei'}",
// async: false,
// url: "http://172.20.1.71:8099/jQueryMobile.asmx/GetProjInfoList",
// dataType: "jsonp",
// jsonp: "callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
// jsonpCallback: "flightHandler", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
// success: function(res) {
// var strRet = res.d; //Net3.5
// //alert(strRet);
// strRet = eval("(" + strRet + ")");
// var b_ok = strRet.success;
// var strInfo = strRet.info;
// alert(strInfo);
// $.each(strRet.rows, function(index, row) {
// alert(row.proj_code);
// alert(row.proj_name)
// });
// //data = $.parseJSON(''+data+'');//jquery1.4
// },
// error: function() {
// alert('fail');
// }
// }); });
后台代码:
/// <summary>
///WebService 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
[System.Web.Script.Services.ScriptService]
public class WebService : System.Web.Services.WebService
{ /// <summary>
/// 根据当前用户帐户,获取项目信息列表
/// </summary>
/// <param name="UserId">当前用户帐户</param>
/// <returns></returns>
[WebMethod]
public void GetProjInfoList(string UserId)
{
// string callback = HttpContext.Current.Request["jsoncallback"];
string callbackMethodName = HttpContext.Current.Request.Params["jsoncallback"] ?? "";
var m_DicRoot = new Dictionary<string, object>();
try
{
string strSql = "select proj_code,proj_name from FN_PM_UserDefaultProjLimits('" + UserId + "') where sortNo<>10";
DataTable dt_projInfo = TmpSqlServer.ExecuteSqlRead(strSql);
m_DicRoot.Add("success", true);
m_DicRoot.Add("info", "读取数据成功");
var list = new List<Dictionary<string, object>>();
foreach (DataRow dr in dt_projInfo.Rows)
{
var m_dic = new Dictionary<string, object>();
m_dic.Add("proj_code", dr["proj_code"].ToString());
m_dic.Add("proj_name", dr["proj_name"].ToString());
list.Add(m_dic);
}
m_DicRoot.Add("rows", list);
}
catch (Exception e)
{
m_DicRoot.Add("success", false);
m_DicRoot.Add("info", e.ToString());
}
//关于result这词是你自己自定义的属性
//会作为回调参数的属性供你调用结果 21
//HttpContext.Current.Response.ContentType = "application/json";
//HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;
// HttpContext.Current.Response.Write(callbackMethodName + "({result:'true'})");
HttpContext.Current.Response.Write(callbackMethodName + "({result:'" + ListToJson(m_DicRoot) + "'})");
HttpContext.Current.Response.End(); //HttpContext.Current.Response.Write( ListToJson(m_DicRoot));
//return ListToJson(m_DicRoot);
} } }
C# jquery webservices 跨域调用的问题解决方案的更多相关文章
- jquery Ajax跨域调用WebServices方法
由于公司需要开发一个手机页面,想提供给同事直接在手机上可以查询SAP资料.数据需要使用js调用webserver来获取. 因为初次使用Jquery调用Webserver,所以期间并不顺利.测试调用We ...
- Jquery的跨域调用
JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念.当然,究其本质还是通过script标签动态加载js,似乎这是实现真正跨域的唯一方法. getJSON ...
- jquery ajax跨域调用
客户端: //ajax跨域调用的方法 $.ajax({ url:dustUrl+"/screenshot/getDevices.do", type: "get" ...
- jquery ajax 无法跨域调用的解决办法
今天要用到jquery ajax 跨域调用,但是ajax是禁止跨域调用的,所以只能先在php文件使用函数取得跨域的值,然后用ajax调用本地php文件.
- jquery中的jsonp跨域调用
jquery jsonp跨域调用接口
- jquery中的jsonp跨域调用(接口)
jquery jsonp跨域调用接口
- jquery post跨域请求数据
原先一直以为要实现跨域请求只能用jsonp,只能支持GET请求,后来了解到使用POST请求也可以实现跨域,但是需要在服务器增加Access-Control-Allow-Origin和Access-Co ...
- jQuery跨域调用WebService
jQuery跨域调用WebService举例html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...
- 实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法
关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace Wcf ...
随机推荐
- WPF Datagrid multiple selecteditems in MVVM
I can assure you: SelectedItems is indeed bindable as a XAML CommandParameter After a lot of digging ...
- POJ 1222 (开关问题+高斯消元法)
题目链接: http://poj.org/problem?id=1222 题目大意:一堆开关,或开或关.每个开关按下后,周围4个方向开关反转.问使最后所有开关都关闭的,开关按法.0表示不按,1表示按. ...
- ACM zb的生日
zb的生日 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 今天是阴历七月初五,acm队员zb的生日.zb正在和C小加.never在武汉集训.他想给这两位兄弟买点什么 ...
- 【BZOJ】1132: [POI2008]Tro
题意 给\(n(1 \le n \le 3000)\)个点,求所有三角形的面积和. 分析 首先枚举一个点,发现把其它点按照关于这个点的极角排序后第\(i\)个点关于前面\(1\)到\(i-1\)的点组 ...
- 【POJ3667】Hotel
Description The cows are journeying north to Thunder Bay in Canada to gain cultural enrichment and e ...
- Android -- ProgressBar(进度条的使用)
我们在开发程序是经常会需要软件全屏显示.自定义标题(使用按钮等控件)和其他的需求,今天这一讲就是如何控制Android应用程序的窗体显示. requestWindowFeature可以设置的值有:(具 ...
- Linux 日常维护命令
1 防火墙配置 1)重启后生效 开启: chkconfig iptables on 关闭: chkconfig iptables off 或者 /sbin/chkconfig --level ...
- BZOJ3105: [cqoi2013]新Nim游戏 博弈论+线性基
一个原来写的题. 既然最后是nim游戏,且玩家是先手,则希望第二回合结束后是一个异或和不为0的局面,这样才能必胜. 所以思考一下我们要在第一回合留下线性基 然后就是求线性基,因为要取走的最少,所以排一 ...
- 基于SVG的JS地图插件
一:D3(Data-Driven Documents) 官网地址:http://d3js.org/ 功能非常强大(不支持IE8) D3 是最流行的可视化库之一,它被很多其他的表格插件所使用.它允许绑定 ...
- Centos 下安装Docker 遇到的一些错误
1.公司的服务器的内核版本:2.6.32-431.23.3.el6_x86_64 如何升级内核请参考前一篇文章 2.在这个地址上面下载 的 https://test.docker.com/builds ...