如何根据 URL 的输出设置 JavaScript 数组

How to set a javascript array based on the output of a URL?

本文关键字:设置 JavaScript 数组 输出 何根 URL      更新时间:2023-09-26

我有一个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 数组?

考虑到您的 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)

如果要解析的输出位于其他地方,则应使用自定义选择器通过 var 中的 jQuery 加载它text。请注意,var cleanedText日期值中删除坏字符,以便将它们解析为有效的 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());
});

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

称为JSON。你可以使用像 json2.js 这样的外部库来解析它,或者如果你不关心旧浏览器,请使用本机版本,

var myData = JSON.parse('..data');