0

配列に返される SQL クエリである PHP ファイルから配列を取得する必要があります。でエンコードしてjson_encode();返しました。

これが私のJSファイルです:

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

成功タグを取得していますが、データが null に戻ってきます。データ配列を取得するには何を使用する必要がありますか?

4

4 に答える 4

1

私の問題に対する答えは、PHPスクリプトの「戻るまたは終了」行を変更するだけでした。AJAX の誤解が原因でした。

変化する:

return json_encode($配列);

為に:

echo json_encode($配列);

于 2013-04-18T00:59:33.997 に答える
0

次のコードを使用します

$('#ddlCountry').change(function(){

        $.ajax({                
            type:'POST',
            url:'<?php echo base_url(); ?>admin_in_action/GetDivisionByCountry.php',
            datatype:'json',
            data:{countryId:this.value},
            cache:false,
            success:function(result){
                $('#ddlDivision').get(0).options.length = 0;
                $('#ddlDivision').get(0).options[0] = new Option("--Select--", "0");

                $.map(result, function(item){
                    $('#ddlDivision').get(0).options[$('#ddlDivision').get(0).options.length] = new Option(item.DivisionName, item.DivisionID);
                });                

            },
            error:function(){}
        });            
    }); 
于 2013-04-17T15:31:44.890 に答える
0

getJSON を使用してみることができます

$.getJSON('scripts/chart_handler.php')
.done(function( data ) {
  $.each( data, function( i, item ) {

   $('#countries').append('<option value="'+ item +'">'+ item +'</option>');

  });
});

クエリで FECH ASSOC を使用している場合は、item.namefield を使用する必要があります。namefield は、アイテムのみを挿入するフィールドの名前です。

firebug (firefox 拡張機能) を使用してデバッグし、アイテム dom extruture を確認できます。

get メソッドで何かを送信する場合は、次のようにします。

$.getJSON('scripts/chart_handler.php',{indicator : indic_val})
.done(function( data ) {
  $.each( data, function( i, item ) {

   $('#countries').append('<option value="'+ item +'">'+ item +'</option>');

  });
});
于 2013-04-17T14:28:38.923 に答える
0

これは、UTF8-BOM (バイト オーダー マーク) が原因である可能性があると思います。json 文字列の先頭に BOM が追加され、無効になります。

ドキュメントを BOM なしの UTF8 に変換してみてください。

詳細については、SO に関するこの他のスレッドを参照してください: json_decode は webservice 呼び出し後に NULL を返します

于 2013-04-17T15:01:05.833 に答える