脚本宝典收集整理的这篇文章主要介绍了javascript代码实例教程-jquery+getJson+struts2, 跨域访问问题,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
问题1 跨域无法访问或者放回空
问题2 跨域返回 标签不对
这次使用ajax跨域访问遇到以上问题,网上也找到很多的资料,可都是只说前面或者我着急没有仔细理解。
然后第二天有仔细的进行调试,边看参考手册。
ajax篇解决
预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:
"xml": 返回 XML 文档,可用 jQuery 处理。
"html": 返回纯文本 HTML 信息;包含的script标签会在插入dom时执行。
"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数。'''注意:'''在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。(因为将使用DOM的script标签来加载)
"json": 返回 JSON 数据 。
"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
"text": 返回纯文本字符串
解决代码
var url='http://192.168.0.25:8080/peu/webaction.action?result=ik&format=json&jsoncallback=?';
$.ajax({
type: "POST",
url: url,
data: "",
dataType:'jsonp',
async: false,
success: function(msg){
//数据data
//var data = eval('(' + msg.result + ')');
var string = msg.result[0] ;
alert(string);
},
getJson篇,getJson是对ajax简体封装
function ajaxList() {
var url='http://192.168.0.25:8080/peu/webaction.action?result=ik&format=json&jsoncallback=?';
$.getJSON(url, function(data){
//var obj = eval('(' + data.result + ')');
//alert(data.result[0]);
alert(data.result[1]);
});
}
好了前台都设置了,再好的前台也离不开后台支持。所谓前面一直报错,主要理解
&jsoncallback=? 这个后缀,因为在真正请求的时候是这样的
http://192.168.0.25:8080/peu/webaction.action?result=ik&format=json&jsoncallback=jsonp136685653745920
浏览器自动添加方法名称: jsonp136685653745920
javascript解决跨域返回就是利用 返回参数,所以返回格式必须是
jsonp136685653745920("+json_object+"). 这个是重点啊。理解了这个返回数据格式才能有效。
所以后台篇
public String execute(){
try
{
String chartData = "20000,9200,1181,12000,7606,13887,12000,12222,8000,9009,11288,12099,11081,12000,7606,13887,12000,12222,22000,9009,11288,12099,1181,6000,7606,13887,12000,12222,22000,9009,11288,12099,12000,17733,9876,12783,12899,13888,13277,14299,12345,12783,12899,13888,13277,14299,12345,12345,14299,12345,12345,15763,12345,15763,12000,17733,9876,12783,12899,8000";
String chartData2 = "9876,12783,12899,13888,13277,14299,12345,12345,14299,12345,12345,15763,12000,17733,9876,12783,12899,13888,13277,14299,12345,12345,15763,12000,17733,9876,12783,12899,13888,13277,14299,12345,,12345,12345,15763,12000,17733,9876,12783,12899,13888,13277,14299,12345,12345,12345,15763,12000,17733,9876,12783,12899,13888,13277,14299,12345,30000,26000";
List<String> list = new ArrayList<String>();
list.add(chartData);
list.add(chartData2);
//result = JSONUtil.(list);
JSONArray arr=JSONArray.fromObject(list);
String callback = this.getRequest().getParameter("jsoncallback");
//log.info(""+callback);
String jsoncallback = callback+"({'result':"+arr+"})";
PrintWriter out = this.getResponse().getWriter();
out.print(jsoncallback);
out.flush();
out.close();
log.info(""+jsoncallback);
}
catch (Exception e)
{
// TODO: handle exception
}
return null; //一定是返回null,不然格式还是不正确。也就是说是通过response来返回了。
}
觉得可用,就经常来吧! 脚本宝典 欢迎评论哦! js脚本,巧夺天工,精雕玉琢。小宝典献丑了!
以上是脚本宝典为你收集整理的javascript代码实例教程-jquery+getJson+struts2, 跨域访问问题全部内容,希望文章能够帮你解决javascript代码实例教程-jquery+getJson+struts2, 跨域访问问题所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。