我有一个页面可以创建以下输出:
<script>
var JSONObject = { "groups":['1210103','1210103','1210103','1210405'],
"prices":['279,00','399,00','628,00','129,00'],
"titles":['','','','']
};
</script>
此页面由ajax调用调用:
$.ajax({url:plink,success: function(result) { }
我现在需要接收json数组并将它们传递给普通的javascript数组。 我该怎么做?
我尝试过:
result = jQuery.parseJSON(data);
mygroups = result.groups;
myprices = result.prices;
mylabels = result.titles;
答案 0 :(得分:2)
更改您的网页,使其只生成JSON:
{"groups":["1210103","1210103","1210103","1210405"],
"prices":["279,00","399,00","628,00","129,00"],
"titles":["","","",""]
}
请注意,在JSON中,必须使用"
,而不是'
来引用字符串。
让它返回Content-Type
application/json
标题。如果由于某种原因您无法在响应中设置正确的Content-Type
标头,则可以强制jQuery将响应视为JSON,方法是将dataType: 'json'
添加到ajax
来电,但这是最好的使用正确的content-Type
。
然后在ajax
来电的success
回调中,result
将已成为具有三个属性的反序列化对象(groups
,{{1 },prices
),这将是您可以使用的JavaScript数组。
您在下面的评论中说过,该网页是一个包含嵌入式titles
标记的完整HTML页面,除了script
标记的内容之外,您无法控制它,因为你正在使用的CMS。
我强烈建议转向更灵活的CMS。
除非你能做到这一点,否则你可以简单地以文本形式接收页面,然后提取JSON。将您的script
标记更改为以下内容:
script
注意标记。然后,您可以在标记之间提取JSON,并在其上使用<script>
var JSONObject = /*XXX_JSONSTART_XXX*/{"groups":["1210103","1210103","1210103","1210405"],
"prices":["279,00","399,00","628,00","129,00"],
"titles":["","","",""]
}/*XXX_JSONEND_XXX*/;
</script>
。例如:
$.parseJSON