jquery Ajax跨域调用WebServices方法
2015-09-14 17:06
766 查看
由于公司需要开发一个手机页面,想提供给同事直接在手机上可以查询SAP资料。数据需要使用js调用webserver来获取。
因为初次使用Jquery调用Webserver,所以期间并不顺利。测试调用Webserver在本机成功,但传到服务器就不能调用成功,后面才知道原来是不支持跨域访问。花了几天的时间才解决该问题。下面记录一下跨域调用的核心方法。
本域调用方法:
Webservers代码:
以上方法仅适用于同域访问。
跨域调用:
1、调用jquery文件:
<script type="text/javascript" src="js/jquery.js"></script>
2、跨域调用方法:
Webservices注意事项:
为确保jquery能正常调用,WebServices输出方式请参考以下。(类型为void)
因为初次使用Jquery调用Webserver,所以期间并不顺利。测试调用Webserver在本机成功,但传到服务器就不能调用成功,后面才知道原来是不支持跨域访问。花了几天的时间才解决该问题。下面记录一下跨域调用的核心方法。
本域调用方法:
<script type="text/javascript"> window.onload = function () { //var data = '{"name":"test"}'; var options = { namespace: 'http://tempuri.org/', method: 'HelloWorld', contentType: 'application/json; charset=utf-8', dataType: 'json', data: data, success: function (msg) { alert(msg);} }; webservice('http://localhost/mobile/webs/demo.asmx', options); }; </script>
Webservers代码:
<%@ WebService Language="C#" Class="WebServiceDemo" %> using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; [WebService(Namespace = "http://www.guru4.net/", Description = "Webservice dimostrativo per JavaScript SOAP Client")] public class WebServiceDemo : WebService { [WebMethod(Description = "Hello World!")] public string HelloWorld(){ return "Hello World!"; } }
以上方法仅适用于同域访问。
跨域调用:
1、调用jquery文件:
<script type="text/javascript" src="js/jquery.js"></script>
2、跨域调用方法:
<script type="text/javascript"> var dataStr = "name="+s_name+"&id="+s_id $.ajax ({ type:"get", url:"http://itcolin.com/mobile/ demo.asmx/get_name", dataType: "jsonp", jsonp: 'jsoncallback', data:dataStr, /*直接弹窗提示调用结果*/ success: function (json) {alert(JSON.stringify(json));}, /*如果调用不成功,输出错误提示*/ error: function (x, e) { alert("Error:" + x.responseText");} }); </script>
Webservices注意事项:
为确保jquery能正常调用,WebServices输出方式请参考以下。(类型为void)
<%@ WebService Language="C#" Class="WebServiceDemo" %> using System; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; [WebService(Namespace = "http://www.guru4.net/", Description = "Webservice dimostrativo per JavaScript SOAP Client")] public class WebServiceDemo : WebService { [WebMethod] public void get_str() { string rtnstr = "{name:'test','id':'001'}"; System.Web.HttpContext.Current.Response.ContentType = "application/json;charset=utf-8"; string jsonCallBackFunName = string.Empty; jsonCallBackFunName = HttpContext.Current.Request.Params["jsoncallback"].ToString(); System.Web.HttpContext.Current.Response.Write(jsonCallBackFunName + "(" + rtnstr +")"); System.Web.HttpContext.Current.Response.End(); } }
相关文章推荐
- javaScript & jquery完美判断图片是否加载完毕
- TimeSheet:一个用于时间规划的jQuery插件
- jQuery获取select的text
- 一个简单的jQuery鼠标悬停经过事件
- jQuery实现默认是闭合的FAQ展开效果菜单
- jQuery.smoove — jQuery和CSS3炫酷滚动页面内容元素动画特效插件
- jQuery系列之操作select标签
- 锋利的Jquery【读书笔记】 -- 第四章 jQuery中的事件和动画
- jQuery 效果 - 淡入淡出
- 使用jQuery查找注册到某个DOM对象的事件处理函数
- jQuery从服务器获取数据使用post(字典查询的功能),服务器端php返回数据
- jQuery 效果- 隐藏和显示
- 关于Jquery 序列化表单的注意事项
- 关于Jquery 序列化表单的注意事项
- jQuery ajax 同步失效?
- jquery for循环
- jQuery实现的Tab滑动选项卡及图片切换(多种效果)小结
- JQuery中的siblings()是什么意思
- jQuery执行脚本,在指定的div添加(附加)html代码
- JavaScript学习笔记8-jQuery表单选择器