0

我需要从一个 PHP 文件中检索一个数组,该文件是一个返回数组的 SQL 查询。我已将其编码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>');
                    });
               })
         });
    });
});

我正在进入成功标签,但数据返回为空。我必须使用什么来获取数据数组?

4

4 回答 4

1

我的问题的答案只是在 PHP 脚本中更改“返回或结束”行。这要归功于对 AJAX 的误解。

改变:

返回 json_encode($array);

为了:

回声 json_encode($array);

于 2013-04-18T00:59:33.997 回答
0

我认为这可能是由 UTF8-BOM(字节顺序标记)引起的。BOM 被添加到 json 字符串的开头,这将使它失效。

尝试将您的文档转换为没有 BOM 的 UTF8,然后再试一次。

有关详细信息,请参阅 SO 上的其他线程:json_decode 在 webservice 调用后返回 NULL

于 2013-04-17T15:01:05.833 回答
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

使用以下代码

$('#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 回答