ajax跨域访问服务器
来源:互联网 发布:广州淘宝进货都在哪里 编辑:程序博客网 时间:2024/06/03 15:08
解决方案1:webservice + jsonp 但是jsonp跨域访问只能以get方式请求,而调用webservice却只能以post方式调用。
解决方案2:WCF + soap
SOAPProxyFabric.fromUrl("http://xxxx/WCFName.svc?singleWsdl", true, gotproxycallback); function gotproxycallback(proxy, wsdl, text){ var p={"userName": "xxxx", "password": "xxxxxxx"};//方法参数以json形式声明 if (proxy instanceof SOAPProxy) { proxy.MethodName(p, true, resultcallback, failurecallback);//调用WCF,传入参数p } }
//执行后的回调函数 相当于success:functionfunction resultcallback(res, xml, text, proxy){var dataObj = eval("(" + res + ")");//wcf方法返回的数据json后面怎么解析没弄明白}
SOAPProxyFabric不知道是aapcan自己封装的还是哪里来的,反正没弄明白。
解决方案3:一般处理程序(*.ashx)+ jsonp
服务器端:
using Bll;using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Web;namespace uniRMS.Website.mobileService{ /// <summary> /// GetNewsList 的摘要说明 /// </summary> public class GetNewsList : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain"; int page = Int32.Parse(context.Request["page"].ToString()); int pageSize = Int32.Parse(context.Request["pageSize"].ToString());//每页多少条记录(固定) List<News> list = new List<News>(); BllNews bll = new BllNews(); //绑定数据 string fldSort = "*";//字段名(全部字段为*) string sort = "order by id DESC";//排序字段 int pageIndex = page;//指定当前为第几页 DataTable dt = bll.Pages(pageSize, pageIndex, fldSort, sort, "type=1"); if (dt == null || dt.Rows.Count == 0) { context.Response.Write(""); } foreach (DataRow dr in dt.Rows) { News n = new News(); n.id = dr["id"].ToString(); n.title = dr["title"].ToString(); n.time = DateTime.Parse(dr["time"].ToString()).ToString("yyyy-MM-dd"); list.Add(n); } // 返回客户端定义的回调函数 var callBack = context.Request["<span style="color:#ff0000;">callbackparam2</span>"].ToString(); //获得客户端提交的回调函数名称 context.Response.Write(callBack + "(" + Newtonsoft.Json.JsonConvert.SerializeObject(list) + ")"); } public bool IsReusable { get { return false; } } }}客户端:
function Bind(page) { var xhrurl = "http://xxxxx:8111/mobileService/GetNewsList.ashx";//跨域URL $.ajax({ type : "get", async : false,//异步(true)/同步(false) url : xhrurl, cache : false, data : { page : page, pageSize : 5 }, dataType : "jsonp",//返回数据类型 jsonp : "callbackparam2",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback : "success_jsonpCallback2",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 success : function(json) { //获取数据并解析json var obj = json; for (var i = 0; i < obj.length; i++) { $("#newslist").append("<a onclick=\"jumpToInfo('" + obj[i].id + "')\">" + obj[i].title + "<span class='l_time'>" + obj[i].time + "</span></a>"); } }, error : function(e) { //错误处理 } }); }这是我采用的方案,方案1/2并没有做太多研究。这里有一个问题就是当一个页面多次以这种方式调用的时候,回调函数什么的名字尽量不要一样,如果是异步请求的时候返回数据就会混乱,导致请求后数据返回出现问题。
0 0
- ajax跨域访问服务器
- Ajax跨域访问Tomcat服务器
- jQuery $.ajax()直接远程跨域访问服务器报错
- ajax异步访问服务器
- ajax 访问服务器
- ajax访问Node服务器
- Ajax跨域访问
- ajax跨域访问?
- Ajax跨域访问
- ajax跨域访问
- ajax跨域访问
- ajax跨域访问
- AJAX跨域访问
- AJAX跨域访问
- Ajax跨域访问
- ajax跨域访问
- Ajax跨域访问
- ajax跨域访问
- 摇一摇 怎么实现
- 记录个小问题:解决SSH中的Host key verification failed
- jqueryeasy ui 的 accordion 和 tabs控件
- 线段树练习之——分块解法
- Android的TextView使用Html来处理图片显示、字体样式、超链接等
- ajax跨域访问服务器
- mysql 连接url中useUnicode=true&characterEncoding=UTF-8 的作用
- Xcode技巧 - 3
- js进行页面传值
- 用enum类型数据解决switch case选择字符串的问题
- ORA-00257: 归档程序错误。在释放之前仅限于内部连接
- Android的TextView/EditText使用CharacterStyle&SpannableString来处理图片显示、字体样式、超链接等
- Spring -- 如何在spring中读取properties配置文件里面的信息
- 对于system用户使用一些api需要注意的地方