是否可以在$ .ajax函数中通过JSON重用PHP中的数组?

时间:2013-04-19 13:13:43

标签: php jquery ajax json

这是交易: 这个区域是动态图表的准备,我在选择第一个选择输入时打开一个新的选择输入。凭借其价值(从第一个开始),我正在进行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>');
            });
        }),
      });
   }); 
});

2 个答案:

答案 0 :(得分:1)

实际上非常简单。只需声明一个在当前AJAX调用之外可访问的变量,因此对于该范围是持久的(在ready-function中的anonymus函数内)。

$(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>');
                });
            }),
        });
    });
});

答案 1 :(得分:0)

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

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

function myFunction(data){
  // do your stuff
}