以前用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格式为:
{
"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"
}])