srcipt动态跨域请求获取返回数据

liaohaiying 2014-06-19 01:47:14
跨域请求
返回的数据是这样的,
{"context":{"provinceId":"","contextRoot":"","productMode":"true","x_resultinfo":"ok","subSysCode":"","x_resultcode":"0","contextName":"","version":"0"},"data":{"bean":{"COUNTY_CODE":"5701","FAMILYNETUSER":"已开通[成员]","VERIFY_TYPE":"-1","VIRTUALNETUSER_FLAG":"1","REAL_NAME_FLAG_SHOW":"待确认","COUNTY_NAME":"柯城","PROD_CATALOG":"1","CUST_ID":"7000807844","DATA_USAGE":"30元包(500MB)","DATA_USAGE_SUB":"30元..","REAL_NAME_FLAG":"12","BALANCE":"138.91","CUST_STATUS":"2","CARD_TYPE":"99","ISLOCALCUST":"0","USER_ID":"7001044639","OFFER_NAME":"abc","OS_STATUS":"00000000000000000000","NET_AGE":"21","IS_ERROR":"0","CUST_TYPE":"1","OS_STATUS_NAME":"abc","CUST_NAME":"陈~~","REGION_NAME":"abc","VERIFY_RESULT":"未认证","ISVIRTUALNETUSER":"5元","OFFER_ID":"600000126100","TRADEMARK_NAME":"abc","BILL_ID":"1234567890","REGION_CODE":"570","TRADEMARK":"100000000004","USER_STATUS":"1"},"beans":[{"BALANCE":"138.91","COUNTY_NAME":"柯城","ISVIRTUALNETUSER":"5元","DATA_USAGE":"30元","FAMILYNETUSER":"已开通[成员]","TRADEMARK_NAME":"abc","DATA_USAGE_SUB":"30元.."}],"code":"200","msg":" 数据加载成功","rules":[],"sysCode":"socket"}}

<script src = 'http://xxx.com/business?service=ajax&page=CommonPage&listener=execute&uid=c0001WS&billId=1234567890&_=1401889461025'>
</script>
这样子加载是成功的,返回数据也正常,可是我就是不知道怎么把这返回的数据读出来,请教
...全文
656 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Cocl 2014-06-20
  • 打赏
  • 举报
回复
既然对方网站支持jsonp,你在请求里加上回调函数就行了,我看你发起的请求里面貌似没有回调函数 这样的话光返回json是会报错的
自然框架 2014-06-20
  • 打赏
  • 举报
回复
引用 10 楼 liaohaiying 的回复:
[quote=引用 9 楼 jyk 的回复:] 对方返回callback,那就好吧了,用jQuery很简单。

 $.ajax({
            type: "get",
            dataType: "JSONP",
            cache: false,
            url: "访问的地址",  
            data: {"key1":"value1","key2":"value2"},
            //timeout: 2000,
            error: function (request, textStatus, errorThrown) { //访问失败,并且给出提示
                alert("提交" + ajaxInfo.title + "的时候发生错误!");

            },

            success: function (data) {
//data 就是返回的json
            }
        });
这么做有跨域问题吗?[/quote] 基本没啥问题,服务器端支持就行。
tony4geek 2014-06-20
  • 打赏
  • 举报
回复
jsonp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-
transitional.dtd">
<html>    
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        <title>
            xxx
        </title>
         <script type="text/javascript" src="http://www.w3school.com.cn/jquery/jquery-1.11.1.min.js">
        </script>
        <script type="text/javascript">
            jQuery(document).ready(function() {
                $.ajax({
                    type: "get",
                    async: false,
                    data: {                        
                    },                    
 		    url: "http://whois.pconline.com.cn/ipJson.jsp",
                    dataType: "jsonp",
                    jsonp: "callback",
                    success: function(json) {       
   			for(var e in json){
                   	    document.write(e + "--->" + json[e]+"<br/>");  
        		}                      
                         
                    },
                    error: function(XMLHttpRequest, textStatus, errorThrown) {
                        alert(XMLHttpRequest.status);
                        alert(XMLHttpRequest.readyState);
                        alert(textStatus);
                    }

                });

            });
        </script>
    </head>
    
    <body>
      
    </body>

</html>
yaojunyi3721 2014-06-20
  • 打赏
  • 举报
回复
没积分法问题了 楼主赏点分吧 谢谢
  • 打赏
  • 举报
回复
引用 3 楼 liaohaiying 的回复:
[quote=引用 2 楼 showbo 的回复:] 看地址是否支持jsonp,不支持就需要自己做代理页面了
是jsonp的,自己做代理这个方法我试过,用JSP做的,但有问题,页面的登陆状态带不过去,登陆后用JS发送这个请求能正常返回数据,但存在跨域拒绝访问问题,但用JSP做,返回来的数据是要求登陆,就是说从服务端发送请求对方不认页面上的登陆状态,怎么办呢 登陆也一样,用JS发送POST数据过去能成功返回登陆成功数据并且页面处于登陆状态,但用JSP发送POST数据过去能成功返回登陆成功数据但。。。。页面没有处于登陆状态。。。。 求解 jsonp不会用。。。。。求实例[/quote] 返回的是json,不是jsonp,jsonp和json可不是一样的概念。。jsonp是要返回可以执行的js代码,jsonp一般格式:函数名称(需要的数据) 如果要登陆才能获取,这个就比较麻烦了,你要先用jsp的xhr对象发送登陆信息到他们的登陆接口,然后保留cookie信息,下次发送xhr请求时要附带上登陆成功返回的cookie信息才行。。java不知道,自己找相关的模拟登陆来看
liaohaiying 2014-06-19
  • 打赏
  • 举报
回复
js用xmlhttp我能取到数据的,但在TOMCAT上就跨域拒绝访问,用JSP么登陆状态不对,返回来的数据是要求登陆。。。。。
liaohaiying 2014-06-19
  • 打赏
  • 举报
回复
引用 4 楼 jyk 的回复:
<script src = 这样加载的是js文件,返回来的必须是符合js格式和语法的东东。 返回的是 {} ,这个不是完整的js语句,所以会报js错误。导致无法使用。 所以呢,如果能修改返回值的话,可以返回 var a = {} ; 然后 a 就是返回的数据可以使用了。 或者返回 callback ({}); 页面里需要定义 function callback (json) { } 返回来之后,就会调用这个函数。 如果使用的是chrome,或者IE10,+ ,那么可以使用cors来实现跨域,这个很方便,jQuery直接支持。 如果是IE8、9的话,不直接支持,要换成 …… 忘记叫啥名了。
第一,对方网站不是我控制的, 第二,对方网站是返回callback的,但我取不到。。。。。 请教
liaohaiying 2014-06-19
  • 打赏
  • 举报
回复
引用 1 楼 xzy21com 的回复:
你这其实等于是链接一个js文件,而代码只有 {xx:xxx} 对象,会报错的。 应该返回 var a = {.....} 之类的
不会报错,而且返回来的数据正常,在他的原页面上读这些数据正常,在同一浏览器进程中,我在本地页面通过这样发送请求,然后刷新原网站页面,我发送请求返回来的数据都能显示出来,我就是不知道怎么把这些数据读出来
自然框架 2014-06-19
  • 打赏
  • 举报
回复
<script src = 这样加载的是js文件,返回来的必须是符合js格式和语法的东东。 返回的是 {} ,这个不是完整的js语句,所以会报js错误。导致无法使用。 所以呢,如果能修改返回值的话,可以返回 var a = {} ; 然后 a 就是返回的数据可以使用了。 或者返回 callback ({}); 页面里需要定义 function callback (json) { } 返回来之后,就会调用这个函数。 如果使用的是chrome,或者IE10,+ ,那么可以使用cors来实现跨域,这个很方便,jQuery直接支持。 如果是IE8、9的话,不直接支持,要换成 …… 忘记叫啥名了。
liaohaiying 2014-06-19
  • 打赏
  • 举报
回复
引用 2 楼 showbo 的回复:
看地址是否支持jsonp,不支持就需要自己做代理页面了
是jsonp的,自己做代理这个方法我试过,用JSP做的,但有问题,页面的登陆状态带不过去,登陆后用JS发送这个请求能正常返回数据,但存在跨域拒绝访问问题,但用JSP做,返回来的数据是要求登陆,就是说从服务端发送请求对方不认页面上的登陆状态,怎么办呢 登陆也一样,用JS发送POST数据过去能成功返回登陆成功数据并且页面处于登陆状态,但用JSP发送POST数据过去能成功返回登陆成功数据但。。。。页面没有处于登陆状态。。。。 求解 jsonp不会用。。。。。求实例
  • 打赏
  • 举报
回复
看地址是否支持jsonp,不支持就需要自己做代理页面了
scscms太阳光 2014-06-19
  • 打赏
  • 举报
回复
你这其实等于是链接一个js文件,而代码只有 {xx:xxx} 对象,会报错的。 应该返回 var a = {.....} 之类的
liaohaiying 2014-06-19
  • 打赏
  • 举报
回复
引用 9 楼 jyk 的回复:
对方返回callback,那就好吧了,用jQuery很简单。

 $.ajax({
            type: "get",
            dataType: "JSONP",
            cache: false,
            url: "访问的地址",  
            data: {"key1":"value1","key2":"value2"},
            //timeout: 2000,
            error: function (request, textStatus, errorThrown) { //访问失败,并且给出提示
                alert("提交" + ajaxInfo.title + "的时候发生错误!");

            },

            success: function (data) {
//data 就是返回的json
            }
        });
这么做有跨域问题吗?
自然框架 2014-06-19
  • 打赏
  • 举报
回复
对方返回callback,那就好吧了,用jQuery很简单。

 $.ajax({
            type: "get",
            dataType: "JSONP",
            cache: false,
            url: "访问的地址",  
            data: {"key1":"value1","key2":"value2"},
            //timeout: 2000,
            error: function (request, textStatus, errorThrown) { //访问失败,并且给出提示
                alert("提交" + ajaxInfo.title + "的时候发生错误!");

            },

            success: function (data) {
//data 就是返回的json
            }
        });

87,997

社区成员

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

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