前台代码:

<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 跨域调用的问题解决方案的更多相关文章

  1. jquery Ajax跨域调用WebServices方法

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

  2. Jquery的跨域调用

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

  3. jquery ajax跨域调用

    客户端: //ajax跨域调用的方法 $.ajax({ url:dustUrl+"/screenshot/getDevices.do", type: "get" ...

  4. jquery ajax 无法跨域调用的解决办法

    今天要用到jquery ajax 跨域调用,但是ajax是禁止跨域调用的,所以只能先在php文件使用函数取得跨域的值,然后用ajax调用本地php文件.

  5. jquery中的jsonp跨域调用

                                                    jquery jsonp跨域调用接口

  6. jquery中的jsonp跨域调用(接口)

                                                                           jquery jsonp跨域调用接口

  7. jquery post跨域请求数据

    原先一直以为要实现跨域请求只能用jsonp,只能支持GET请求,后来了解到使用POST请求也可以实现跨域,但是需要在服务器增加Access-Control-Allow-Origin和Access-Co ...

  8. jQuery跨域调用WebService

    jQuery跨域调用WebService举例html: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN&qu ...

  9. 实现jquery.ajax及原生的XMLHttpRequest跨域调用WCF服务的方法

    关于ajax跨域调用WCF服务的方法很多,经过我反复的代码测试,认为如下方法是最为简便的,当然也不能说别人的方法是错误的,下面就来上代码,WCF服务定义还是延用上次的,如: namespace Wcf ...

随机推荐

  1. Lc.exe已退出,代码为-1

    编译项目,出现提示"Lc.exe已退出,代码为-1" .   解决办法: 意思就是把licenses.licx这个文件里的内容删除,但是文件还在(此时是个空文件),发生这个问题的原 ...

  2. Django的cookie和session

    http://www.cnblogs.com/lhj588/archive/2011/10/27/2226976.html

  3. background-attachment 定义背景图片随滚动轴的移动方式

  4. ACM: FZU 2148 Moon Game - 海伦公式

     FZU 2148  Moon Game Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  5. NOIp 2014 #4 无线网络发射器选址 Label:模拟

    题目描述 随着智能手机的日益普及,人们对无线网的需求日益增大.某城市决定对城市内的公共场所覆盖无线网. 假设该城市的布局为由严格平行的129 条东西向街道和129 条南北向街道所形成的网格状,并且相邻 ...

  6. Windows Phone 8 LongListSelector实现下拉自动刷新列表

    LongListSelector是一个加强版的列表控件,它可以实现分组的列表,如系统人脉列表的交互效果就可以利用LongListSelector控件去实现,同时LongListSelector也一样可 ...

  7. 【BZOJ】2212: [Poi2011]Tree Rotations

    题意 给一棵\(n(1 \le n \le 200000)\)个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少. 分析 可以发现如果交换非叶结点的左右子树,对子树内的交换无影响, ...

  8. Spring MVC Maven 环境搭建与部署

    本文简单演示了本地开发环境的搭建.项目出包.部署运行.HelloWorld,以及部分注意事项. 起初的玩法:先安装Eclipse,然后分别下载并安装Maven.spring的插件,再进行工程模式转换, ...

  9. 使用RESTClient插件进行数据模拟(GET,POST)提交

    1:在Firefox中下载RESTClient插件安装 2:安装好后的界面 (chrome://restclient/content/restclient.html) 3:选择GET/POST,输入U ...

  10. sencha 安装、学习

     sencha touch 是Extjs 的手机版,Extjs是创建富客户端的AJAX应用中的重量级框架,sencha touch当然就是面向触摸设备的重量级js框架,在做基于桌面的网页时经常用的js ...