javascript - 检索纯文本 JSON,插入到 JavaScript

标签 javascript json url

我有一个返回 application/json Content-Type 的 URL http://myapp.com/get_data。当我浏览到该 URL 时,我会在浏览器窗口中得到一个纯文本 JSON 数组

[[key, value],
 [key, value],
 [key, value],
 ...]

我还有一个 JavaScript 函数,它期望数据为 JSON 数组格式

function process_data() {
  var data = // give me more data in JSON array format...
}

如何让我的 JavaScript 浏览到 http://myapp.com/get_data 并将生成的 JSON 数组分配给 process_data( )?

我是 JavaScript 的新手(具有 Python 背景),如果您能推荐使用核心 JavaScript 库的解决方案,我将不胜感激。也欢迎使用其他库的解决方案,最好是那些被认为是最佳实践的解决方案。

更新

看来我的问题并不清楚。让我提供一个来自 Python 的例子。完成必要的导入后,我可以做类似的事情

url = "http://myapp.com/get_data"
page = urllib2.urlopen(url)
page_source = page.read()

这一次,page_source 已经是一个 Python str 对象,我可以很容易地使用它,分配给其他变量等等。如果我可以将 Python 和 JavaScript 混合在一起,对于这个问题的上下文,我想做类似的事情

function process_data() {
  url = "http://myapp.com/get_data"
  page = urllib2.urlopen(url)
  page_source = page.read()
  var data = convert_str_to_JSON(page_source)
}

当然那只是一段丑陋的代码混搭,但我希望它传达了我想要达到的目的:

  1. JavaScript 将GET 一个 URL。
  2. 阅读来源。
  3. 将源解释为 JSON。
  4. 将其分配给一个变量。

最佳答案

较新的浏览器原生支持 JSON 解析。

你可以说 JSON.parse('json data')。对于较旧的浏览器(例如 IE 7 或 6),您可以使用此库:https://github.com/douglascrockford/JSON-js

使用上述库中的 json2.js。它检查 native 浏览器实现是否存在,如果不存在,则添加它。

不要使用eval(如eval is evil)!

更新:要获取“json 数据”,请使用:

var jsonObject = {}; 
var xhr = new XMLHttpRequest();
xhr.open( "GET", url, true );      // true makes this call asynchronous
xhr.onreadystatechange = function () {    // need eventhandler since our call is async
     if ( xhr.readyState == 4 && xhr.status == 200 ) {  // check for success
        jsonObject = JSON.parse( xhr.responseText );
     }
};
xhr.send(null);

此外,我建议阅读此 article用于跨浏览器问题和 XMLHttpRequest 对象的实现。

关于javascript - 检索纯文本 JSON,插入到 JavaScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055330/

相关文章:

ios - JSONSerialization可与iOS模拟器一起使用,但在使用手机时出现错误“对下标的含糊使用”

list - 使用包含个性化列表列的 URL 在 ServiceNow 中导出 CSV 文件

javascript - 在跨域中创建安全的 iframe

javascript - 如何使用javascript在浏览器中显示本地文件的内容(代码兼容所有浏览器)?

javascript - 无需 jQuery 即可组合两个 AJAX

javascript - 将 Webpack UMD 转换为原生 ES 模块

Python,将 json/dictionary 对象迭代写入文件(一次一个)

javascript - Angular 2 如何使用 Observable 分配 JSON 响应数组并在 typescript 接口(interface)中映射并使用 *ngFor 在 html 中检索?

javascript - 可以在条形图中合并 2 个条形图 (chart.js)

.htaccess - 为什么我的网站 URL 末尾有双斜杠,例如 ://