jsp + jquery 實現跨域訪問 --返回json
2013-01-17 18:04
288 查看
引用:http://blog.csdn.net/lshaohe/article/details/4954760
近日由於開發需要,要用到跨域訪問數據,查了一下資料,發現主要有兩種方法:
1,直接用js訪問格式如
[javascript] view plaincopy
<mce:script src="<%=page_url%><!--
?method=jsonInfo&moduleid=359&pageid=1&pagesize=7&count=25&colsize=2">
// --></mce:script>
後臺用
[java] view plaincopy
HTML2TEXT.JAVA
public static String string2Json(String s) {
StringBuilder sb = new StringBuilder(s.length()+20);
sb.append('/"');
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '/"':
sb.append("///"");
break;
case '//':
sb.append("////");
break;
case '/':
sb.append("///");
break;
case '/b':
sb.append("//b");
break;
case '/f':
sb.append("//f");
break;
case '/n':
sb.append("//n");
break;
case '/r':
sb.append("//r");
break;
case '/t':
sb.append("//t");
break;
default:
sb.append(c);
}
}
sb.append('/"');
//System.out.println(sb.toString());
return sb.toString();
}
out.print("document.write("+Html2Text.string2Json (str.toString())+")");
注:script 訪問的連接後臺(action 或servlet 或jsp等。。)返回的數據是您要先顯示在網頁中的內容,即是您要在後臺排好
版后才返回數據
2,利用現成js框架庫,這裡我用的是jquery
步驟如下
前臺在js方法里如下
[javascript] view plaincopy
。。
var url = 'http://localhost:8080/testjson/testJsonServlet?callback=?';
$.getJSON(url, function(jsonContent){
alert(jsonContent.status);
});
後臺
[java] view plaincopy
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String callback = request.getParameter("callback");
//request.setAttribute("msg", callback+"({ status: '1', info:'填写正确!'})");
out.print(callback+"({ status: '1', info:'填写正确!'})");
System.out.println("in");
out.flush();
out.close();
注:1:這裡的前臺和後臺如果是跨域的話,是在不同的工程裡面的,但不跨域的話,也可在同一工程裡面,畢竟不跨域是
跨域的特殊化
2:特別要主要前臺的這裡
var url = 'http://localhost:8080/testjson/testJsonServlet?callback=?' ;
和後臺的這裡
String callback = request.getParameter("callback");
out.print(callback+"({ status: '1', info:'填写正确!'})");
輸出的json數據要加上callback參數,否則就跨域不了了,這里是關鍵哦。。
呵呵采用方法2的返回json數據的話不用手工編寫{ status: '1', info:'填写正确!'}
這種格式的,有個json的jar包的,轉為jsonobject就可以的拉,到網上去搜索一下吧,
就交流這么多先,不明的可以留言哦,還望各位大蝦多多指點哦
呵呵:我上傳了個例子在我的資源里了,有需要的去下載看看哦,
近日由於開發需要,要用到跨域訪問數據,查了一下資料,發現主要有兩種方法:
1,直接用js訪問格式如
[javascript] view plaincopy
<mce:script src="<%=page_url%><!--
?method=jsonInfo&moduleid=359&pageid=1&pagesize=7&count=25&colsize=2">
// --></mce:script>
後臺用
[java] view plaincopy
HTML2TEXT.JAVA
public static String string2Json(String s) {
StringBuilder sb = new StringBuilder(s.length()+20);
sb.append('/"');
for (int i=0; i<s.length(); i++) {
char c = s.charAt(i);
switch (c) {
case '/"':
sb.append("///"");
break;
case '//':
sb.append("////");
break;
case '/':
sb.append("///");
break;
case '/b':
sb.append("//b");
break;
case '/f':
sb.append("//f");
break;
case '/n':
sb.append("//n");
break;
case '/r':
sb.append("//r");
break;
case '/t':
sb.append("//t");
break;
default:
sb.append(c);
}
}
sb.append('/"');
//System.out.println(sb.toString());
return sb.toString();
}
out.print("document.write("+Html2Text.string2Json (str.toString())+")");
注:script 訪問的連接後臺(action 或servlet 或jsp等。。)返回的數據是您要先顯示在網頁中的內容,即是您要在後臺排好
版后才返回數據
2,利用現成js框架庫,這裡我用的是jquery
步驟如下
前臺在js方法里如下
[javascript] view plaincopy
。。
var url = 'http://localhost:8080/testjson/testJsonServlet?callback=?';
$.getJSON(url, function(jsonContent){
alert(jsonContent.status);
});
後臺
[java] view plaincopy
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String callback = request.getParameter("callback");
//request.setAttribute("msg", callback+"({ status: '1', info:'填写正确!'})");
out.print(callback+"({ status: '1', info:'填写正确!'})");
System.out.println("in");
out.flush();
out.close();
注:1:這裡的前臺和後臺如果是跨域的話,是在不同的工程裡面的,但不跨域的話,也可在同一工程裡面,畢竟不跨域是
跨域的特殊化
2:特別要主要前臺的這裡
var url = 'http://localhost:8080/testjson/testJsonServlet?callback=?' ;
和後臺的這裡
String callback = request.getParameter("callback");
out.print(callback+"({ status: '1', info:'填写正确!'})");
輸出的json數據要加上callback參數,否則就跨域不了了,這里是關鍵哦。。
呵呵采用方法2的返回json數據的話不用手工編寫{ status: '1', info:'填写正确!'}
這種格式的,有個json的jar包的,轉為jsonobject就可以的拉,到網上去搜索一下吧,
就交流這么多先,不明的可以留言哦,還望各位大蝦多多指點哦
呵呵:我上傳了個例子在我的資源里了,有需要的去下載看看哦,
相关文章推荐
- (跨域)jquery.ajax提交请求并返回json数据
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- jsp通过jQuery返回json数据到页面
- Jquery跨域调用struts2的Action返回json数据易出现的问题
- jquery 跨域调用wcf 返回json 碰到的一些问题
- jsp通过jQuery返回json数据到页面
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- 最最基层的ajax交互代码jquery+java之间的json跨域传递以及java的json代码返回
- jquery与后台进行数据交互--前台发单一数据对象,后台返回一个json字符串 jsp页面
- Jquery跨域调用struts2的Action返回json数据易出现的问题
- 利用JQuery jsonp实现Ajax跨域请求 .Net 的*.handler 和 WebService,返回json数据
- php jquery jsonp 跨域访问,jsoncallback无返回?!!!,无解了,为什么没返回,没返回!原来是是这个jsoncallback的问题
- jquery通过struts2请求,返回json数据,在jsp页面形成二级联动下拉列表
- 排除JQuery通过HttpGet调用WebService返回Json时“parserror”错误
- jquery $.getJSON()跨域请求
- jquery序列化form表单使用ajax提交后处理返回的json数据
- jQuery通过Ajax返回JSON数据
- Json+jquery+asp.net 返回数据库数据