我需要从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>');
});
})
});
});
});
我获得内部成功标记,但数据返回null。 我需要使用什么来获取数据数组?
答案 0 :(得分:1)
我的问题的答案只是在PHP脚本中更改“返回或结束”行。 这是因为对AJAX的误解。
更改:
返回json_encode($ array);
for:
echo json_encode($ array);
答案 1 :(得分: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 extencion)来调试并查看项目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>');
});
});
答案 2 :(得分:0)
我认为这可能是由UTF8-BOM(字节顺序标记)引起的。 BOM将添加到json字符串的开头,这将使其无效。
尝试将您的文档转换为没有BOM的UTF8并再给它一次。
有关详细信息,请参阅SO上的其他帖子:json_decode returns NULL after webservice call
答案 3 :(得分: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(){}
});
});