在自己的服务器上传了一个json文件:http://47.75.195.199/NodeApi/...
项目地址
https://github.com/chunsenye/...
test.json
{
"a": "hello!",
"b": "this",
"c": "is",
"d": "my",
"e": "first",
"f": "api"
}
现在通过两种方式请求它
1. 在node环境中使用js代码进行http请求 具体代码如下
getJson.js
//需要先按照request模块
//npm i request
var request = require('request');
// request(url,callback);
request('http://47.75.195.199/NodeApi/test.json', function (error, response, data) {
//如果请求成功则打印数据 否则显示错误信息
if (!error && response.statusCode == 200) {
console.log(data);
}else {
console.log(error);
console.log(response.statusCode);
}
});
在改文件目录下 运行 node getJson.js
请求成功 结果如下
2.在html文件中的js代码中进行http请求(ajax 和 jsonp)
getJson.html
第一次尝试 直接使用ajax 来 GET 请求数据
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>获取json数据</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
<div id="json"></div>
</body>
<script>
$.ajax({
type: "GET",
url: 'http://47.75.195.199/NodeApi/test.json',
success: function (response,data) {
if (response.resultcode == 200) {
console.log(data)
}
},
error: function (r) {
console.log(r)
}
})
</script>
</html>
得到的结果是这样的
这就是大名鼎鼎的跨域问题,我们不能直接请求这个服务器上的数据 但是可以通过jsonp 实现原理需要知道
第二次尝试 加多了一行代码 dataType: 'jsonp'
<script>
$.ajax({
type: "GET",
url: 'http://47.75.195.199/NodeApi/test.json',
dataType: 'jsonp',
success: function (response,data) {
if (response.resultcode == 200) {
console.log(data)
}
},
error: function (r) {
console.log(r)
}
})
</script>
得到结果是 Uncaught SyntaxError: Unexpected token :
这里是接口的数据不对,所以没办法获取,如果要使用jsonp获取 test.json应该这样写 加多一个中括号
第三次尝试
test.json
[{
"a": "hello!",
"b": "this",
"c": "is",
"d": "my",
"e": "first",
"f": "api"
}]
请求成功了,数据格式也对了,但是就是一直走error那里,并不会执行成功的回调
第四次尝试
<script>
$.ajax({
type: "GET",
url: 'http://47.75.195.199/NodeApi/test2.json',
dataType: 'jsonp',
jsonp: 'callback',
jsonpCallback:"successCallback",
success: function (response) {
console.log('success:'+response)
},
error:function(error){
console.log('error:'+error)
}
}).done(function(data){
console.log(data)
})
</script>
还是不行 说是还要改服务器,到这里就很难受了,我刚买的阿里云服务器 还是centos系统的 目前还不知道如何解决 所以只能换一个链接 用别人的数据
更换链接:http://apis.juhe.cn/goodbook/...
这是我在聚合申请的一个接口 请求次数有限 每天只有一百次
最终请求成功,Chrome浏览器会拦截这样的代码 需要允许运行。
后面会处理服务器的问题,或许有人看到 也可以指点一下我 。我的GitHub https://github.com/chunsenye/... 记得给个★哈
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。