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 ...
随机推荐
- NUC_HomeWork1 -- POJ1088(DP)
D - 滑雪 Description Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Mic ...
- 种树 & 乱搞
题意: 在一个(n+1)*(m+1)的网格点上种k棵树,树必须成一条直线,相邻两棵树距离不少于D,求方案数. SOL: 这题吧...巨坑无比,本来我的思路是枚举每一个从(0,0)到(i,j)的矩形,然 ...
- Tarjan 算法&模板
Tarjan 算法 一.算法简介 Tarjan 算法一种由Robert Tarjan提出的求解有向图强连通分量的算法,它能做到线性时间的复杂度. 我们定义: 如果两个顶点可以相互通达,则称两个顶点强连 ...
- 基于MINA构建简单高性能的NIO应用
mina是非常好的C/S架构的java服务器,这里转了一篇关于它的使用感受. 前言MINA是Trustin Lee最新制作的Java通讯框架.通讯框架的主要作用是封装底层IO操作,提供高级的操作API ...
- nodejs入门(一)
1.nodejs简介 Nodejs不是一个js应用.而是一个js运行平台. Node.js 使用事件驱动, 非阻塞I/O 模型而得以轻量和高效 2. 1).Nodejs内置了一个HTTP模块 var ...
- org.openqa.selenium.StaleElementReferenceException
org.openqa.selenium.StaleElementReferenceException如何解啊.什么原因造成的,貌似有时会出现,有时不会出现
- orcale 动态执行语句
create or replace function fn_test2(tablename in varchar2) return number is rtn number; begin --通用的获 ...
- 行业集中度(Concentration Ratio)
行业集中度是决定市场结构最基本.最重要的因素,集中体现了市场的竞争和垄断程度,经常使用的集中度计量指标有:行业集中率(CRn指数).赫尔芬达尔—赫希曼指数(Herfindahl-HirschmanIn ...
- 概率论与数理统计ppt链接
http://e-learning.ecust.edu.cn/G2S/Template/View.aspx?courseId=26835&topMenuId=72352&action= ...
- js中if的另类实现
偶然发现一篇有意思的博客<JS利用短路原理简写if语句> 利用&&短路来实现if的简写. 如 1==2&&a1=1,则后面的a1=1不会进行判断,1==1 ...