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 呼び出しの外部でアクセスできる変数を宣言するだけで、そのスコープに対して永続的になります (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>');
                });
            }),
        });
    });
});
于 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 に答える