2012-07-31 103 views
2

我有以下代码,其中第一部分在触发下拉选择后从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);  
    })}; 

}); 
+1

告诉我'JSON'字符串的结构'数据' – diEcho 2012-07-31 04:22:58

回答

1

对于我来说,秘密的jQuery是选择...

我会做一个快速的“警报(数据)”你的$。每()函数之前,只是要确定你'你得到你认为你得到的东西...

0

我认为你的json没有创建,你可以在控制台中检查它,如果代码没有返回一个json,那么你应该在$.post函数中通过json参数像

$.post('getstations.php', queryParam, processResponse,"json"); 

在这里看到的文档:jQueryPost

+0

嗨罗汉,谢谢你的repsonse。为了仔细检查,我做了一个alert(),并且能够解析json。看起来json确实存在,我能够分离出这些元素。但是,我无法通过push语句将元素传递到数组中。我现在想知道我是否应该尝试for循环。我想我会试试看。随意提供任何其他建议。再次感谢。 – 2012-07-31 13:20:38

1

我认为回调函数接受两个值指标和价值

因此,代码应该是

$.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);  
}) 
0
$.post('getstations.php', queryParam, processResponse,"json"); 
queryParam你现在是一个字符串不是一个object对象 jquery api文档说明这里是需要传入一个{xxx:xxx}对象 
+0

好的观察:一个json元素确实是一个字符串,而不是一个对象。感谢您的帮助。 – 2012-07-31 13:07:56