0

我有一个 MVC 应用程序,当我访问某个 URL 时,它会在浏览器中产生以下输出:

[{"name":"Victoria Day","date":"\/Date(1337583600000)\/"},{"name":"Canada Day","date":"\/Date(1341212400000)\/"},{"name":"Civic Holiday","date":"\/Date(1344236400000)\/"},{"name":"Labour Day","date":"\/Date(1346655600000)\/"},{"name":"Thanksgiving","date":"\/Date(1349679600000)\/"},{"name":"Remembrence Day","date":"\/Date(1352707200000)\/"},{"name":"Christmas","date":"\/Date(1356422400000)\/"},{"name":"Boxing Day","date":"\/Date(1356508800000)\/"}]

当然,源代码周围有一堆 html 标签。

如何将此原始信息分配给 Javascript 数组?

4

3 回答 3

1

获取 jQuery 并使用jQuery.getJSON,例如...

于 2012-05-09T20:25:37.193 回答
1

那就是所谓的JSON你可以使用像json2.js这样的外部库来解析它,或者如果你不关心旧浏览器,使用原生版本,

var myData = JSON.parse('..data');
于 2012-05-09T20:34:46.417 回答
1

考虑到您的 http 请求返回您发布的原始数据,您应该能够使用:

var text = $.trim($(document.body).text());
var cleanedText = text.replace(/\\\/Date\(/g,"").replace(/\)\\\//g,"");
var holidays = $.parseJSON(cleanedText); // This is your array!

alert("Loaded " + holidays.length + " holidays. Fifth one is " + holidays[4].name + " celebrated on " + new Date(parseInt(holidays[4].date)).toString());

// Output(the dates should be printed with your preferred timezone offset): 
// Loaded 8 holidays. Fifth one is Thanksgiving celebrated on Mon Oct 08 2012 10:00:00 
// GMT+0300 (GTB Daylight Time)

如果要解析的输出位于其他位置,则应text使用自定义选择器在 var 中通过 jQuery 加载它。请注意, varcleanedText会从日期值中删除坏字符,以便将它们解析为有效的 javascript Date 对象。

如果您还有其他问题,请发表评论。祝你好运!

JSFiddle 工作示例:点击这里

编辑:你需要jQuery

Edit2:我认为您需要使用$.get才能从自定义 url 检索数据(确保它来自同一服务器,否则您可能会遇到浏览器安全问题)。您应该对此进行一些尝试,并尝试检查您的请求是否到达服务器上的正确路径(例如,您可以在“网络”选项卡上的“开发人员工具”下的 Google Chome 浏览器上检查所有请求数据)。您应该更改的内容function(data) {以满足您的需要。

var url = 'page.html'; // You should change this with the url that returns your data.
$.get(url, function(data) {
  alert('The response is: ' + data); // Make sure it's ok
  var text = $.trim(data);
  var cleanedText = text.replace(/\\\/Date\(/g,"").replace(/\)\\\//g,"");
  var holidays = $.parseJSON(cleanedText); // This is your array!

  alert("Loaded " + holidays.length + " holidays. Fifth one is " + holidays[4].name + "           celebrated on " + new Date(parseInt(holidays[4].date)).toString());
});
于 2012-05-09T21:07:25.413 回答