javascript - 使用 Javascript 通过 AJAX 从 URL 获取 JSON 响应

标签 javascript jquery html ajax

我对 Javascript 比较陌生,并且一直在尝试使用 AJAX 从 URL 获取 JSON 数据。

该 url 返回一个包含我想要请求/获取的字符的数组,然后处理数据以在 html 中显示它。该网址是: http://stark-tundra-9859.herokuapp.com/locations

我正在使用的代码如下,问题是我似乎没有收到任何响应。此外,我不知道请求信息变量应该是什么:

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 完成了此代码的一个版本,并且我确实在控制台中收到一条消息,如下所示:

获取http://stark-tundra-9859.herokuapp.com/locations 200 OK 198ms

响应头 连接保持事件状态 内容长度 154 内容类型 application/json;charset=utf-8 服务器瘦 1.5.1 代号 Straight Razor X-Content-Type-Options nosniff

请求头 接受 application/json、text/javascript、/; q=0.01 接受编码 gzip、deflate 接受语言 es-ES,es;q=0.8,en-US;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>");
    });

}

在这个 JQUERY 中,似乎我没有正确接收来自 JSON 请求的数据。也许我处理错误?

如果您能提前提供帮助,我将不胜感激!

最佳答案

要回答这个问题,我需要问你两件事:
1)您在哪个域上运行此脚本? (与“http://stark-tundra-9859.herokuapp.com/”在同一台服务器上?)
因为该 URL 不允许 CORS (跨源资源共享)

2) 打开您的控制台(在 Chrome 中:Ctrl+shift+j)并告诉我们您收到的错误消息(如果有的话)。

如果您对第一个问题的回答是(意味着您没有在同一主机上运行脚本),那么,如果您可以控制该页面,请通过发送以下 header 来启用 CORS ( 请在实现之前阅读一些与安全相关的信息):

Access-Control-Allow-Origin: *

更多特定于语言的实现可以在 enable-cors.org 上找到。 (如果您不愿意使用 CORS,您还可以阅读有关跨域请求的“JSONP”实现)。

另一方面,(您的答案是),我们需要查看您的服务器端相关代码,以及客户端抛出的任何错误消息。

注意:据我所知(截至目前 - 发布答案后 5 分钟),http://stark-tundra-9859.herokuapp.com/locations URL 返回“500 - 内部服务器错误” - 您的问题似乎与服务器端相关。

更新, 获取数据后,您需要将其作为 JSON 对象进行访问,
像这样:

data[0].lat // will hold the lat value of the first object in the JSON wrapper object

关于使用 jQuery 实现 JSONP,我在 SO 中进行了快速搜索,您可能会想看一下:jQuery AJAX cross domain

关于javascript - 使用 Javascript 通过 AJAX 从 URL 获取 JSON 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16859318/

相关文章:

javascript - 用于设备控制的自定义 Thingsboard 小部件 (REST)

jquery - Malsup 表单上传卡在%Complete==100(引导进度上传)

javascript - 执行文档范围 PNG 动画的最有效方法

html - 如何设置表格样式以鼓励某些单元格先垂直生长再水平生长

html - 如何根据标签文本长度拉伸(stretch)容器宽度?

javascript - State.go() 在地址页面中显示 url 但不刷新 html View

javascript - 如何将一个数组的内容复制到另一个数组中。 JavaScript

.net - 如何在提交后禁用页面?

php - Emacs 对 Web 开发有任何工作点文件感到沮丧吗?

javascript - 非事件客户端连接的 socket.io 服务器端超时?