我有以下代码,其中第一部分在触发下拉选择后从PHP获取JSON。结果放在一个名为“结果”的div中,只是为了验证它是否有效。到目前为止,一切看起来都很好。我还有几行解析JSON的代码,并在一系列警报中显示各个元素,再次,只是为了验证它是否正常运行,它确实如此。但是,在此之后,我尝试以与创建警报类似的方式解析JSON,只将单个结果放在单独的数组中。我有一个检查,以便在执行$ .each时提醒结果,以便我可以看到代码块是否正常运行。但是,它不起作用。我猜测也许我的括号设置不正确,或者我需要在某处声明另一个功能。任何人都可以提出可能存在的问题吗?
感谢您的帮助。
$(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);
})};
});
答案 0 :(得分:1)
对我来说,jquery的秘诀是选择者......
我会在你的$ .each()函数之前做一个快速的“警报(数据)”,只是为了确保你得到你认为你得到的东西......
答案 1 :(得分:1)
我认为回调函数接受两个值index和value
所以代码应该是
$.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);
})
答案 2 :(得分:0)
我认为您的json未创建,您可以在控制台中检查它,如果代码没有返回json,那么您应该在json
函数中传递$.post
参数,如
$.post('getstations.php', queryParam, processResponse,"json");
请参阅此处的文档:jQueryPost
答案 3 :(得分:0)
$.post('getstations.php', queryParam, processResponse,"json");
queryParam你现在是一个字符串不是一个object对象 jquery api文档说明这里是需要传入一个{xxx:xxx}对象