Javascript JSON数据仍然来自上一个AJAX调用
我正在做一个小应用程序,从不同的JSON获取值,并在谷歌图表中绘制图表。我有8个选择器,每组2:4,用于选择我要绘制第一级的4个变量的JSON文件,另外4个(嵌套)用于选择所选JSON第二级的不同数据。第一级调用JSON文件,并将属性显示为选项,以在第二级选择器中选择为级联下拉列表 当我选择form first level并调用json时,jsonData是正确的,但是如果我改变主意并想从第一级选择另一个选项,我的函数会再次返回旧值。。只有在触发secondChoosejsonData函数后才会发生这种情况 有人知道为什么吗 提前谢谢你 我向您提供以下代码:Javascript JSON数据仍然来自上一个AJAX调用,javascript,json,ajax,Javascript,Json,Ajax,我正在做一个小应用程序,从不同的JSON获取值,并在谷歌图表中绘制图表。我有8个选择器,每组2:4,用于选择我要绘制第一级的4个变量的JSON文件,另外4个(嵌套)用于选择所选JSON第二级的不同数据。第一级调用JSON文件,并将属性显示为选项,以在第二级选择器中选择为级联下拉列表 当我选择form first level并调用json时,jsonData是正确的,但是如果我改变主意并想从第一级选择另一个选项,我的函数会再次返回旧值。。只有在触发secondChoosejsonData函数后才会
var url;
var id;
var dataContainer = [];
var findSelector;
var keySelected;
var newDatas;
$(".firstLevel").on('change', function(){
url = $(this).find("option:selected").attr("name");
id = $(this).attr("name");
$.ajax({
url: url,
type: "GET",
dataType: 'jsonp',
crossDomain: true,
jsonpCallback: 'foo',
success: secondChoose
})
});
function secondChoose(jsonData) {
findSelector = $("#"+id);
findSelector.empty();
findSelector.append("<option selected>..</option>")
for (var key in jsonData) {
findSelector.append("<option class='form-option'>"+key+"</option>")
}
findSelector.on('change',function(){
keySelected = findSelector.find("option:selected").text();
newDatas = jsonData[keySelected].datas;
dataContainer.push(newDatas);
})
};
不要在each中声明函数。它对性能有严重影响。findSelector.on也是如此,它应该在函数之外,这样就不会在每次调用secondChoose时反弹。您的问题可能来自于此。将findSelector.on移出秒也选择并告诉我问题是否仍然存在。还要检查浏览器的调试器,查看请求的响应是否与视图上的匹配。如果不是,服务器可能有故障,否则是您的脚本。谢谢!!如果findSelector.on在secondChoose函数之外,那么如何使用我的json数据执行它?将jsonData存储在一个全局变量中,该变量在url变量旁边声明。on change函数中findSelector的值可能不是您所期望的值。这很容易通过使用这个来修复,比如keySelected=$this.find。。。