首页 / 浏览问题 / 云GIS / 问题详情
想获得服务的地图数据
12EXP 2017年07月21日
var response;
    var map, layer;
    //获取 XMLHttpRequest 对象
    var commit=getcommit();
    //HTTP 请求的方法类型,这里是 GET
    var method="GET";
    //请求的地址,即 maps 资源
    var uri=str+"/maps.rjson";
    //设置是否为异步通信
    var async=false;
    //用户名和密码,当服务器需要验证时指定
    
    //消息体(Entity Body)内容
    
    //建立 HTTP 连接
    commit.open(method,uri,async);
    //设置消息头(Message Headers)
    commit.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
    //发送 HTTP 请求
    
    commit.send(null);
    //commit.responseText 就是接收的服务器响应
    response = json_parse(commit.responseText, null);  
    //解析从服务器端返回的 json 字符串,解析为一个 JavaScript 对象。
    alert(response[0].name);

为什么得到了响应缺没法输出呢?

1个回答

建议在需要断点的地方写 debugger; 然后在浏览器开发者工具调试;或者在浏览器下断点(html里含js脚本的用火狐断点调试)、用 console.log(变量); 在开发者工具的控制台输出变量。

也可以直接在开发者工具的网络(或NetWork)查看http请求及响应,以确定是代码的问题还是服务端没有响应正确结果。

maps资源得到的只是该服务发布的地图列表的描述信息,而不是地图数据(点线面及属性、影像等),比如:
http://support.supermap.com.cn:8090/iserver/services/map-jingjin/rest/maps.rjson

毛瑞
1
1,780EXP 2017年07月21日
我已经解决了,又是跨域问题- -但是我已经在iserver的web.xml里面设置了允许CORS跨域的东西了,

然后我现在又加上了代理proxy.jsp才解决问题...
跨域不是这个报错,这个资源应该是允许跨域访问的,况且还是get请求,get请求一般默认允许跨域的,我试试先。
没问题,我直接以file:/// 打开该html,url改成
http://support.supermap.com.cn:8090/iserver/services/map-china400/rest/maps.json
能得到结果。

但是我真的是真的就加上了加上了两句话

声明代理的路径,

var proxyPath="http://localhost:8080/Java/proxy.jsp?";

然后 

$.ajax({ url:

proxyPath+"http://localhost:8090/iserver/services/map-china400/rest/maps.rjson",

就好了

如果不加上的话就会出现问题,我也奇怪为什么非要代理,我访问

http://localhost:8090/iserver/services.rjson也可以正常进行,就是地图列表的信息不能正常访问

根据地图服务,得到数据服务地址不就行了么,然后想获取啥都行
...