0

这是交易:这个区域是为动态图表做准备,当我选择第一个选择输入时,我将打开一个新的选择输入。凭借其值(从第一个开始),我正在执行 SQL 查询并获取由第一个选择过滤的国家/地区数据。一切正常,但我确实想重新使用这个来自 PHP 的数组来创建最多 4 个新的选择。由于它保持在 $.ajax 成功内,我不确定我是否可以在外面使用它。

这是我的代码:

$(document).ready(function() {
   $('#indicators').change(function() {
      $('#country1').fadeIn('slow');
      var indic_val = $(this).val();
      $.ajax({
        url: 'scripts/chart_handler.php',
        dataType: "json",
        type: 'post',
        data: {'indicator' : indic_val},
        async:false,
        success: (function ( data ){
            $.each(data, function(i, key) {
                $('#country1').append('<option value="'+ key +'">'+ key +'</option>');
            });
        }),
      });
   }); 
});
4

2 回答 2

1

其实很简单。只需声明一个可在当前 AJAX 调用之外访问的变量,因此该变量在该范围内是持久的(在就绪函数内的匿名函数内)。

$(document).ready(function() {
    var jsonData; // this is the variable where we will store the data
    $('#indicators').change(function() {
        $('#country1').fadeIn('slow');
        var indic_val = $(this).val();
        $.ajax({
            url: 'scripts/chart_handler.php',
            dataType: "json",
            type: 'post',
            data: {'indicator' : indic_val},
            async:false,
            success: (function ( data ){
                jsonData = data; //that's all what you need
                $.each(data, function(i, key) {
                    $('#country1').append('<option value="'+ key +'">'+ key +'</option>');
                });
            }),
        });
    });
});
于 2013-04-19T13:18:05.073 回答
0

是的,你可以..创建一个函数并将数据作为参数传递

success: (function ( data ){
         myFunction(data);
        $.each(data, function(i, key) {
            $('#country1').append('<option value="'+ key +'">'+ key +'</option>');
        });
    }),

function myFunction(data){
  // do your stuff
}
于 2013-04-19T13:17:11.347 回答