Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JSON数据仍然来自上一个AJAX调用_Javascript_Json_Ajax - Fatal编程技术网

Javascript JSON数据仍然来自上一个AJAX调用

Javascript JSON数据仍然来自上一个AJAX调用,javascript,json,ajax,Javascript,Json,Ajax,我正在做一个小应用程序,从不同的JSON获取值,并在谷歌图表中绘制图表。我有8个选择器,每组2:4,用于选择我要绘制第一级的4个变量的JSON文件,另外4个(嵌套)用于选择所选JSON第二级的不同数据。第一级调用JSON文件,并将属性显示为选项,以在第二级选择器中选择为级联下拉列表 当我选择form first level并调用json时,jsonData是正确的,但是如果我改变主意并想从第一级选择另一个选项,我的函数会再次返回旧值。。只有在触发secondChoosejsonData函数后才会

我正在做一个小应用程序,从不同的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。。。