如何基于URL的输出设置javascript数组?

如何基于URL的输出设置javascript数组?,javascript,html,arrays,Javascript,Html,Arrays,我有一个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(13466

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

获取jQuery并使用,例如…

获取jQuery并使用,例如…

调用。您可以使用外部库来解析它,或者如果您不关心旧浏览器,请使用本机版本

var myData = JSON.parse('..data');
这就是所谓的。您可以使用外部库来解析它,或者如果您不关心旧浏览器,请使用本机版本

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

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

如果您还有其他问题,请留下评论。祝你好运

​JSFIDLE工作示例:

编辑:您需要

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

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());
});

考虑到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)
如果要分析的输出位于其他位置,则应使用自定义选择器通过jQuery在var
text
中加载它。请注意,var
cleanedText
删除日期值中的错误字符,以便将其作为有效的javascript日期对象进行分析

如果您还有其他问题,请留言。祝您好运

​JSFIDLE工作示例:

编辑:您需要

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

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());
});

你说“源代码有一堆html标记围绕着它”是什么意思?你能给出一个更详细的例子吗?我的意思是如果我用wget获取它,它有,等等。你说“源代码有一堆html标记围绕着它”是什么意思?你能给出一个更详细的例子吗?我的意思是,如果我用wget获取它,它就有了,等等。这对于jQuery来说是一个可怕的用途,33kb的额外膨胀仅仅是为了解码一点点json是疯狂的。为了将来的参考,本机json
json.parse(jsonstring);
json.strignify(jsonobject)来自:现代浏览器,如Firefox 4和Internet Explorer 8,包括解析JSON的特殊功能。我从他的解释中了解到,他也需要获取JSON。即使他只需要将JSON解析放入javascript数组,也不需要使用JSON解析,它已经是javascript了……:D,它是JSON.stringify。也就是说对于jQuery来说,一个糟糕的用法是,33kb的额外膨胀仅仅用于解码一点点json是疯狂的。为了将来的参考,原生json
json.parse(jsonstring);
json.strignify(jsonobject)来自:现代浏览器,如Firefox 4和Internet Explorer 8,包括解析JSON的特殊功能。我从他的解释中了解到,他也需要获取JSON。即使他只需要将JSON解析放在javascript数组中,也不需要使用JSON解析,它已经是javascript了……:D,它是JSON.stringify。好的nks,这很有帮助。我觉得我忽略了显而易见的,但是如何将URL转换为“…数据”?好的,谢谢,这很有帮助。我觉得我忽略了显而易见的,但是如何将URL转换为“…数据”?这很完美-除了我仍然缺少第一步。我有提供数据的URL,我不在同一页中。我如何使用填写var文本的URL?我用一种方法更新了帖子,通过jQuery和Ajax从自定义URL检索内容,然后将数据解析到数组中。希望它能有所帮助。谢谢-这正是我所需要的。这很完美-除了我仍然缺少第一步。我有提供数据的URL,我不在同一页面中。我如何使用URL要填充var文本?我已经用一种方法更新了这篇文章,该方法通过jQuery和Ajax从自定义url检索内容,然后将数据解析到数组中。希望能有所帮助。谢谢-这正是我所需要的。