使用Javascript通过AJAX从URL获取JSON响应
我对Javascript比较陌生,我一直在尝试使用AJAX从URL获取JSON数据 url返回一个数组,其中包含我想要请求/获取的字符,然后处理数据以html显示。该url是: 我使用的代码如下所示,问题是我似乎没有收到任何响应。此外,我不知道request info变量应该是什么:使用Javascript通过AJAX从URL获取JSON响应,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我对Javascript比较陌生,我一直在尝试使用AJAX从URL获取JSON数据 url返回一个数组,其中包含我想要请求/获取的字符,然后处理数据以html显示。该url是: 我使用的代码如下所示,问题是我似乎没有收到任何响应。此外,我不知道request info变量应该是什么: function ajax_request() { requestInfo=''; var params = JSON.stringify(requestInfo); $.ajax({ type: "G
function ajax_request() {
requestInfo='';
var params = JSON.stringify(requestInfo);
$.ajax({
type: "GET",
url: 'http://stark-tundra-9859.herokuapp.com/locations',
data: params,
contentType: "application/json",
dataType: "json",
converters: {
'text json': true
},
success: function(response) {
$("#responseParagraph").html(response);
},
error: function(error) {
$("#responseParagraph").html(error.responseText);
}
});
}
@对于agam360,我还使用JQUERY完成了该代码的一个版本,我在控制台中收到一条消息,如下所示:
获得200 OK 198ms
响应头
连接保持活动状态
内容长度154
内容类型应用/json;字符集=utf-8
服务器瘦1.5.1代码名直剃刀
X-Content-Type-Options-nosniff
请求头
接受application/json、text/javascript、/;q=0.01
接受编码gzip,放气
接受语言es,es;q=0.8,在美国;q=0.5,en;q=0.3
连接保持活动状态
主持人stark-tundra-9859.herokuapp.com
原点为空
用户代理Mozilla/5.0(Windows NT 6.1;rv:16.0)Gecko/20100101 Firefox/16.0
用于接收该答案的代码如下所示:
function json_request() {
$.getJSON(url,
function(data) {
alert(data);
$('#responseParagraph').append("<p>"+data.responseMessage+"</p>");
});
}
函数json_request(){
$.getJSON(url,
功能(数据){
警报(数据);
$(“#responseParagraph”).append(“”+data.responseMessage+””);
});
}
在这个JQUERY中,我似乎没有正确地从JSON请求接收数据。也许我处理得很糟糕
我将非常感谢任何帮助提前 要回答这个问题,我需要问你两件事:
1) 您在哪个域上运行此脚本?(与“”在同一服务器上?)
因为该URL不允许(跨源资源共享) 2) 打开您的控制台(在chrome:Ctrl+shift+j中)并告诉我们您收到了什么错误消息
,如果您收到任何错误消息 如果您对第一个问题的回答是否(意味着您没有在同一台主机上运行脚本),那么,如果您可以控制该页面,请通过发送以下标题来启用CORS(请在实施之前阅读一些与安全相关的信息): 更多特定于语言的实现可以在 (如果您不愿意使用CORS,还可以阅读有关跨域请求的“”实现) 另一方面,(您的答案是是),我们需要查看您的服务器端相关代码,以及在客户端抛出的任何错误消息 注意:据我所见(到目前为止-在发布我的答案5分钟后),URL返回一个“500-内部服务器错误””-您的问题似乎与服务器端的问题有关 更新, 获取数据后,需要将其作为JSON对象访问,
像这样:
关于用jQuery实现JSONP,我在中进行了一次快速搜索,您可能想看一看:因为这似乎是一个外域,它似乎只返回JSON(而不是JSONP),所以不能使用Ajax直接连接到它。请看。您的网站是否也在
stark-tundra-9859.herokuapp.com
上运行?另外,我不知道您是否可以使用contentType:“application/json”
(或json.stringify
)和GET请求(P.S.contentType
用于请求,而不是响应)。它确实是一个外来域(我为测试而设置),那么@FelixKling从这个URL请求这个JSON数据的解决方案是哪一个呢?@JoseSabas,JSON_request()不起作用吗?现在发生了什么?感谢@agam360,回答您的问题:1)不,我没有在同一个域上运行此脚本。2) 控制台显示为空白,没有任何消息。您可以控制该页面吗?你能允许(或尝试允许)CORS吗?你试过使用JSONP吗?我相信我可以添加CORS(尽管以前从未听说过)。不,我没有尝试过使用JSONP,为什么这么说,它应该与JSONP一起工作?@JoseSabas,客户端代码(不是来自同一主机)不能只请求它想要的每个页面,如果页面/主机不允许的话。为了克服这种情况,您可以使用CORS(允许外部JavaScript访问您的页面)或JSONP,这两种方法非常巧妙,以获得相同的结果。如果您在外部运行脚本(例如从其他主机运行),并且希望它访问该页面,请使用这些技术之一。好的@agam360-perfect,谢谢。我将尝试使用JSONP。实现这一巧妙技巧的妙计?哈哈
Access-Control-Allow-Origin: *
data[0].lat // will hold the lat value of the first object in the JSON wrapper object