关于获取返回JSON数据提取的问题

假如别人访问了我的网站aaa.com/?id=123然后网站自动获取地址栏的ID值 , 提交给bbb.com/?id=123并取得返回的JSON。
问题:我如何在aaa.com/?id=123里用js获取url的id,并把ID提交获取返回json里参数URL值,提取出来后(没有出现数据就等待出现数据)然后让aaa.com/?id=123实现跳转,JSON 返回格式如下:
{"resultcode": 200, "reason": "success", "data": {"url": "http://baidu.com", "base64": ""}, "error_code": 0}
本人比较水,希望能帮我写全一点。

9个回答

bbb.com只提供json由于跨域问题aaa.com在客户端直接无法用js获取的,需要在aaa.com做代理来获取返回的json数据,你采纳了帮你写一个demo

showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 回复weixin_41959390: 已发给你,看我下面的回复,注意修改bbb.com地址
大约 2 年之前 回复
weixin_41959390
梅川酷芷 好的
大约 2 年之前 回复
showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 回复weixin_41959390: 跨域了,要么aaa.com做代理,要么yql将bbb.com转jsonp,你采纳了我帮你写yql的示例
大约 2 年之前 回复
weixin_41959390
梅川酷芷 回复showbo: 不一定用JS,只需要在html实现这个功能,应该怎么做。比如ajax可以实现吗
大约 2 年之前 回复
showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 回复weixin_41959390: 都说了跨域值提供json获取不到,需要在aaa.com做代理,不在aaa.com做代理也可以用第三方代理转为jsonp,如yql
大约 2 年之前 回复
weixin_41959390
梅川酷芷 bbb只是一个API接口,我需要提取API信息然后跳转
大约 2 年之前 回复

<script>
    function redirect(data) {
        data = data.query.results.json
        if (data.data&&data.data.url) location = data.data.url
        else alert('数据错误\n' + JSON.stringify(data))
    }
    var m = /id=(\d+)/.exec(location.search.substring(1))//获取id参数
    if (m) document.write('<script src=\'http://query.yahooapis.com/v1/public/yql?callback=redirect&q=select+*+from+json+where+url=" http://lixiaoai.com/3.json?id=' + m[1] + '"&format=json\'><\/script>')
    else alert('ID参数丢失!');
</script>

weixin_41959390
梅川酷芷 嗯嗯,这个可以跳转了
大约 2 年之前 回复

注意修改下面bbb.com的地址

 aaa.com/?id=123
<script>
    function redirect(data) {
        data = data.query.results
        if (data.resultcode == 200) location=data.data.url
        else alert('数据错误\n'+JSON.stringify(data))
    }
    var m = /id=(\d+)/.exec(location.search.substring(1))//获取id参数
    if (m) document.write('<script src="http://query.yahooapis.com/v1/public/yql?callback=redirect&q=select+*+from+json+where+url="http://bbb.com/?id='+m[1]+'"&format=json"><\/script>')
    else alert('ID参数丢失!');
</script>
showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 回复weixin_41959390: 返回的数据结构和你贴的有点不一样,没有resultcode
大约 2 年之前 回复
showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 回复weixin_41959390: 看我另外一个回复
大约 2 年之前 回复
weixin_41959390
梅川酷芷 http://lixiaoai.com/3.json?id=123 这是json地址,用你给的代码,我怎么实现不了呢
大约 2 年之前 回复
showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 http://www.w3dev.cn/article/20130228/JSONP-crossdomain-online-httpproxy-api.aspx
大约 2 年之前 回复
showbo
支付宝加好友偷能量挖,胡杨在等着我的召唤 更多yql语法可以看这个:http://www.w3dev.cn/article/20130319/query.yahooapis.com-v1-public-yql-JSONP-API-introduction.aspx
大约 2 年之前 回复

var jsonStr = '{"resultcode": 200, "reason": "success", "data": {"url": "http://baidu.com", "base64": ""}, "error_code": 0}"';
var obj = JSON.parse(jsonStr);
var objData = obj["data"];
var objUrl = objData["url"];

weixin_41959390
梅川酷芷 怎么获取id并提交获取返回json然后解析,跳转。谢谢了
大约 2 年之前 回复
weixin_41959390
梅川酷芷 能帮我写完整一点嘛,我不懂唉。
大约 2 年之前 回复

能帮我写完整一点嘛,我不懂唉。

第一步 获取url中的id

var id = window.location.search.id;
第二步 get请求, 成功之后跳转
$get(
"bbb.com",
{"id":id},
success=(res.data)=>{
window.location = data.url
}
);

weixin_41959390
梅川酷芷 <script> var id = window.location.search.id; $get("http://lixiaoai.com/3.json",{"id":id},success=(res.data)=>{window.location = data.url}); </script> ,无法执行跳转
大约 2 年之前 回复

function getQueryString(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
var r = window.location.search.substr(1).match(reg);
if (r != null) return decodeURI(r[2]);
return null;
}
获取id 直接 调用getQueryString(“id”)

$.get("url",function(data){
var resultcode = data.resultcode;
},"json")

var data = '{"resultcode": 200, "reason": "success", "data": {"url": "http://baidu.com", "base64": ""}, "error_code": 0}"';
data = eval("(["+data+"])");
var url = data[0].data.url;

leaderyyt
leaderyyt var data = '{"resultcode": 200, "reason": "success", "data": {"url": "http://baidu.com", "base64": ""}, "error_code": 0}';
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐