jQuery:将JSON解析为元素数组
我有以下代码,其中第一部分在触发下拉选择后从PHP获取JSON。结果被放置在一个名为“结果”的div中,以验证它是否有效。一切看起来都很好。我还有几行代码解析了JSON,并将各个元素显示在一系列警报中,再次验证它是否正常工作。但是,在此之后,我尝试以与创建警报类似的方式解析JSON,只将各个结果放在单独的数组中。我有一个检查,以便在执行$ .each时提醒结果,以便我可以查看代码块是否正常工作。但是,它不起作用。我猜测可能是我的括号没有正确设置,或者我需要在某处声明另一个函数。任何人都可以提出什么可能是问题?jQuery:将JSON解析为元素数组
感谢您的帮助。
$(document).ready(function() {
$('#routesDropDown').change(function() {
var queryParam = 'routesStations=' +$(this).val();
$.post('getstations.php', queryParam, processResponse);
});
function processResponse(data) {
$('#results').html(data);
// parse the data and store in variable, "obj"
var obj = jQuery.parseJSON(data);
// iterate through each value in the "obj" variable
$.each(obj, function(key, value) {
alert(value.color + ' ' + value.abbr + ' ' + value.lat + ' ' + value.lng);
});
//THIS IS THE PART THAT DOES NOT WORK...
var obj = jQuery.parseJSON(data) {
var color = [];
var abbr = [];
var lat = [];
var lng = [];
$.each(obj, function(value) {
color.push(value.color);
abbr.push(value.abbr);
lat.push(value.lat);
lng.push(value.lng);
alert(value.color + ' ' + value.abbr + ' ' + value.lat + ' ' + value.lng);
})};
});
对于我来说,秘密的jQuery是选择...
我会做一个快速的“警报(数据)”你的$。每()函数之前,只是要确定你'你得到你认为你得到的东西...
我认为你的json没有创建,你可以在控制台中检查它,如果代码没有返回一个json,那么你应该在$.post
函数中通过json
参数像
$.post('getstations.php', queryParam, processResponse,"json");
在这里看到的文档:jQueryPost
嗨罗汉,谢谢你的repsonse。为了仔细检查,我做了一个alert(),并且能够解析json。看起来json确实存在,我能够分离出这些元素。但是,我无法通过push语句将元素传递到数组中。我现在想知道我是否应该尝试for循环。我想我会试试看。随意提供任何其他建议。再次感谢。 – 2012-07-31 13:20:38
我认为回调函数接受两个值指标和价值
因此,代码应该是
$.each(obj, function(index, value) {<--- Here i have added index. Like your above code.
color.push(value.color);
abbr.push(value.abbr);
lat.push(value.lat);
lng.push(value.lng);
alert(value.color + ' ' + value.abbr + ' ' + value.lat + ' ' + value.lng);
})
$.post('getstations.php', queryParam, processResponse,"json");
queryParam你现在是一个字符串不是一个object对象 jquery api文档说明这里是需要传入一个{xxx:xxx}对象
好的观察:一个json元素确实是一个字符串,而不是一个对象。感谢您的帮助。 – 2012-07-31 13:07:56
告诉我'JSON'字符串的结构'数据' – diEcho 2012-07-31 04:22:58