关于ajax跨域问题josnp的解决方案
2015-06-05 17:36
507 查看
以前用ajax时,都是内网调取url地址,但这次的项目牵扯到了跨域(比如我的url地址是:www.baidu.com,我得去访问百度,并想获取respone数据,即get请求),上网查说是josnp协议可以解决这个问题,于是翻阅了好多资料,也自己尝试了好多遍,才终于解决了这一问题。
首先在客户端:
在js中的ajax请求里,按如下标准写:
var sData ='interval'+interval+'&stime='+todaybegin+'&etime='+todayend+'&routerIP='+routerIP+'&Sas_id='+Sas_id;
jQuery.support.cors = true;
$.ajax({
async :false,
type : "get",
data : sData,
url : "http://172.16.42.135:8080/sas/",
dataType :'JSONP',
jsonpCallback: 'datas',
contentType : "application/jsonp; charset=utf-8",
success : function(responseText, textStatus, XMLHttpRequest){
var saslist = responseText.saslist; //取出jsonp数据
}
以上的 红体字很重要,其中jsonpCallback: 'datas',中datas是由服务器端决定的。详细见如下:
服务器端定义的json格式为:
datas("saslist": [
{
"packets": 123,
"bytes": 1200,
"flows": 100,
"time": "2015-06-05 09:10:00"
},
{
"packets": 123,
"bytes": 1300,
"flows": 100,
"time": "2015-06-05 09:15:00"
},
{
"packets": 123,
"bytes": 1400,
"flows": 100,
"time": "2015-06-05 09:20:00"
},
{
"packets": 123,
"bytes": 1200,
"flows": 100,
"time": "2015-06-05 09:25:00"
},
{
"packets": 123,
"bytes": 1100,
"flows": 100,
"time": "2015-06-05 09:30:00"
},
{
"packets": 123,
"bytes": 1000,
"flows": 100,
"time": "2015-06-05 09:35:00"
}])
相当于是客户端调服务器端某函数一样,saslist可视作函数名,这样写虽说有欠缺,但有助于理解就好。总之处理过程就两处:一:客户端的红体字;二:服务器端起相应jsonpCallback一样的名字供调用。
首先在客户端:
在js中的ajax请求里,按如下标准写:
var sData ='interval'+interval+'&stime='+todaybegin+'&etime='+todayend+'&routerIP='+routerIP+'&Sas_id='+Sas_id;
jQuery.support.cors = true;
$.ajax({
async :false,
type : "get",
data : sData,
url : "http://172.16.42.135:8080/sas/",
dataType :'JSONP',
jsonpCallback: 'datas',
contentType : "application/jsonp; charset=utf-8",
success : function(responseText, textStatus, XMLHttpRequest){
var saslist = responseText.saslist; //取出jsonp数据
}
以上的 红体字很重要,其中jsonpCallback: 'datas',中datas是由服务器端决定的。详细见如下:
服务器端定义的json格式为:
datas("saslist": [
{
"packets": 123,
"bytes": 1200,
"flows": 100,
"time": "2015-06-05 09:10:00"
},
{
"packets": 123,
"bytes": 1300,
"flows": 100,
"time": "2015-06-05 09:15:00"
},
{
"packets": 123,
"bytes": 1400,
"flows": 100,
"time": "2015-06-05 09:20:00"
},
{
"packets": 123,
"bytes": 1200,
"flows": 100,
"time": "2015-06-05 09:25:00"
},
{
"packets": 123,
"bytes": 1100,
"flows": 100,
"time": "2015-06-05 09:30:00"
},
{
"packets": 123,
"bytes": 1000,
"flows": 100,
"time": "2015-06-05 09:35:00"
}])
相当于是客户端调服务器端某函数一样,saslist可视作函数名,这样写虽说有欠缺,但有助于理解就好。总之处理过程就两处:一:客户端的红体字;二:服务器端起相应jsonpCallback一样的名字供调用。
相关文章推荐
- nginx的搭建详解
- 设计模式课程收获
- PHP 替换url中参数
- C#中字符数组,字节数组和string之间的转化
- Java加密技术(一)单向加密算法MD5&SHA&MAC与BASE64
- android app开发思考碎片
- 第六章 系统数据文件和信息
- 【cocos2d-x 027】 android.mk详解
- CentOS iso下载
- gdb
- Range
- SQL中OpenDataSource与OpenRowSet的应用
- Codeforces Round #306 (Div. 2) E. Brackets in Implications
- Linux/Windows设置完成端口的区间
- C# IL代码、JIT编译器、MSIL、Ildasm.exe
- ActionBarSherlock SlidingMenu整合,解决SlidingMenu example的getSupportActionBar()方法不能用问题
- java序列化/反序列化之xstream、protobuf、protostuff 的比较与使用例子
- 数据库主键和外键
- jQuery 效果 - 滑动
- 水题 Codeforces Round #306 (Div. 2) A. Two Substrings