使用ajax调用获取包含3个数组的json对象,并将数组传递给javascript

时间:2013-02-27 09:37:18

标签: javascript ajax arrays json

我有一个页面可以创建以下输出:

<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;

1 个答案:

答案 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数组。

Live Example | Source


您在下面的评论中说过,该网页是一个包含嵌入式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

Live Copy | Source