我们在做项目的时候会出现访问其他网站的数据,即所谓的跨域访问数据。下面的代码是跨域访问数据的例子
<script type="text/javascript">
/*通过getJSON方法取域数据
var json_att = "http:///services/feeds/photos_public.gne?tags=car&tagmode=any&format=json&jsoncallback=?";
$.getJSON(json_att,function(data){
$.each(data.items,function(i,item){
$("<img class='para'/>").attr("src",item.media.m).appendTo("#resText");
})
});
*/
/**/var ajax_att = "http:///services/feeds/photos_public.gne"
$.ajax({
//type: "GET",
//async:'false',
contentType: "application/json; charset=utf-8",
url: ajax_att,
dataType:'jsonp',
jsonp:'jsoncallback',
data: {"tags":"car","tagmode":"any","format":"json"},
success: function(data){
$.each(data.items,function(i,item){
$("<img class='para'/>").attr("src",item.media.m).appendTo("#resText");
})
}
});
</script>
注意后台放回代码的为:
String jsoncallback = Struts2Utils.getRequest().getParameter("jsoncallback");
Struts2Utils.getResponse().setContentType("application/html;charset=UTF-8");
JSONObject jobj = new JSONObject();
String jb = StrUtil.doNull(jsoncallback);
String oi = StrUtil.doNull(objId);
String ot = StrUtil.doNull(objType);
String so = StrUtil.doNull(som).toUpperCase();
if(StrUtil.isEmptyWithTrim(oi)||StrUtil.isEmptyWithTrim(ot)){
jobj.put("flag", "false");
jobj.put("msg", "缺少必要的参数!!");
if(StrUtil.isEmptyWithTrim(jb)){
Struts2Utils.getResponse().getWriter().print(jobj.toString());
}else{
Struts2Utils.getResponse().getWriter().print(jb+"("+jobj.toString()+")");
}
}关键注意:
String jsoncallback = Struts2Utils.getRequest().getParameter("jsoncallback");
Struts2Utils.getResponse().getWriter().print(jb+"("+jobj.toString()+")");
不在同一个域时iframe的问题
protected String showOkDomain(Object msg)throws IOException{
JSONObject jvo = new JSONObject();
StringBuffer sb = new StringBuffer("<script>document.domain='';</script>");
jvo.put("isok", "T");
jvo.put("msg", msg);
sb.append(jvo);
Struts2Utils.getResponse().setContentType("text/html;charset=UTF-8");
Struts2Utils.getResponse().getWriter().write(sb.toString());
return null;
}
















