getjson跨域

lw_881020 2013-09-06 03:52:51
请求地址(在浏览器中直接请求的)

http://server.llkk.com:8181/Server.do?gid=100000&utype=1&callback=?

返回字符串

?({server:[{stype:'server',serverinfo:[{sid:10010001,sname:'封测1服'}]})



$.getJSON("http://server.llkk.com:8181/Rank.do?sid=1&gid=1&type=level", function (data) {
alert("s");//不会执行...
});



public class Server extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setHeader("P3P", "CP=CAO PSA OUR");
response.setContentType("text/javascript");
response.setCharacterEncoding("utf-8");

HashMap serverMap = null;
List<Object[]> serverList = (List<Object[]>) null;
String callback = request.getParameter("callback");
String gid = request.getParameter("gid");
int utype = Integer.parseInt(request.getParameter("utype"));
StringBuffer str = new StringBuffer();
str.append("{server:[");

serverMap = Constant.serverList;
if (serverMap.size() != 0) {
serverList = (List<Object[]>) serverMap.get(gid);
if (serverList != null && serverList.size() > 0) {
Iterator i = serverList.iterator();
int index = 0;
while (i.hasNext()) {
index++;
Object[] sInfo = (Object[]) i.next();
if (utype == 0) {
if (sInfo[4].equals("A")) {
if (sInfo[3] == null) {
str.append("{stype:'server',serverinfo:[{sid:" + sInfo[1] + ",sname:'" + sInfo[2] + "'}");
} else {
if (sInfo[3].equals(1)) {
str.append("{stype:'newserver',serverinfo:[{sid:" + sInfo[1] + ",sname:'" + sInfo[2] + "'}");
} else if (sInfo[3].equals(0)) {
str.append("{stype:'server',serverinfo:[{sid:" + sInfo[1] + ",sname:'" + sInfo[2]+ "'}");
}
}
}
} else if (utype == 1) {
if (sInfo[3] == null) {
str.append("{stype:'server',serverinfo:[{sid:" + sInfo[1] + ",sname:'" + sInfo[2] + "'}");
} else {
if (sInfo[3].equals(1)) {
str.append("{stype:'newserver',serverinfo:[{sid:" + sInfo[1] + ",sname:'" + sInfo[2] + "'}");
} else if (sInfo[3].equals(0)) {
str.append("{stype:'server',serverinfo:[{sid:" + sInfo[1] + ",sname:'" + sInfo[2]+ "'}");
}
}
}
if (index < serverList.size()) {
str.append(",");
}
}
}
}
str.append("]}");

PrintWriter out = response.getWriter();
out.print(callback+"("+str.toString()+")");
out.flush();
out.close();
}
}
...全文
184 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianziren 2013-09-06
  • 打赏
  • 举报
回复
用.ajax吧 这个方法使用时好像问题
lw_881020 2013-09-06
  • 打赏
  • 举报
回复
是JSON格式的问题,不用转义,

?({server:[{stype:'server',serverinfo:[{sid:10010001,sname:'封测1服'}]})
//格式错了,右边少了“]}”
引用 4 楼 LoveMuChen 的回复:
返回json格式 有问题吧...木有看到转义的地方!
tony4geek 2013-09-06
  • 打赏
  • 举报
回复
跨域了。可以在后台url请求地址获取数据,然后前台通过ajax调用后台方法。
LoveMuChen 2013-09-06
  • 打赏
  • 举报
回复
返回json格式 有问题吧...木有看到转义的地方!
key2value 2013-09-06
  • 打赏
  • 举报
回复
因为你现在写的还是ajax,而不是JSONP协议
lw_881020 2013-09-06
  • 打赏
  • 举报
回复
第三段错了,应该是:

$.getJSON("http://server.llkk.com:8181/Server.do?gid=100000&utype=1&callback=?", function (data) {
alert("s")//不执行
});

lw_881020 2013-09-06
  • 打赏
  • 举报
回复
我想问的是:为什么getJSON里不执行,java代码出问题吗

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧