如何使用Jquery和PHP从.ajaxHTTP请求中检索数据?
我需要从一个PHP文件中检索一个数组,该文件是一个返回数组的SQL查询。 我用如何使用Jquery和PHP从.ajaxHTTP请求中检索数据?,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我需要从一个PHP文件中检索一个数组,该文件是一个返回数组的SQL查询。 我用json_encode()对它进行了编码并返回它 这是我的JS文件: $(document).ready(function() { $('#indicators').change(function() { $('#countries').fadeIn('slow'); var indic_val = $(this).val(); var countries = $.ajax({
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>');
});
})
});
});
});
$(文档).ready(函数(){
$(“#指标”)。更改(函数(){
$('国家').fadeIn('缓慢');
var indi_val=$(this.val();
var countries=$.ajax({
url:'scripts/chart_handler.php',
数据类型:“json”,
键入:“POST”,
数据:{'indicator':indic_val},
async:false,
成功:(功能(数据){
控制台日志(数据);
$。每个(数据、功能(i、键){
$(“#国家”)。追加(“”+key+“”);
});
})
});
});
});
我进入了成功标签,但返回的数据为空。
我必须使用什么来获取数据数组?您可以尝试使用getJSON
$.getJSON('scripts/chart_handler.php')
.done(function( data ) {
$.each( data, function( i, item ) {
$('#countries').append('<option value="'+ item +'">'+ item +'</option>');
});
});
$.getJSON('scripts/chart\u handler.php'))
.完成(功能(数据){
$。每个(数据、功能(i、项){
$(“#国家”)。附加(“”+项目+“”);
});
});
I如果您在查询中使用FECH ASSOC,则需要使用item.namefield,其中namefield是您只希望替代item的字段名称
您可以使用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>');
});
});
$.getJSON('scripts/chart_handler.php',{indicator:indic_val})
.完成(功能(数据){
$。每个(数据、功能(i、项){
$(“#国家”)。附加(“”+项目+“”);
});
});
我认为这可能是由UTF8-BOM(字节顺序标记)引起的。BOM被添加到json字符串的开头,这将使其无效
尝试将您的文档转换为不带BOM的UTF8,然后再试一次
有关更多信息,请参阅SO上的另一个线程:使用以下代码
$('#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(){}
});
});
$('#ddlCountry')。更改(函数(){
$.ajax({
类型:'POST',
url:'admin_in_action/GetDivisionByCountry.php',
数据类型:'json',
数据:{countryId:this.value},
cache:false,
成功:功能(结果){
$('#ddlddivision').get(0).options.length=0;
$('#ddlddivision').get(0).options[0]=新选项(“--Select--”和“0”);
$.map(结果、功能(项目){
$('#ddlddivision').get(0).options[$('#ddlddivision').get(0).options.length]=新选项(item.division名称,item.DivisionID);
});
},
错误:函数(){}
});
});
我的问题的答案只是在PHP脚本中更改“returning或ending”行。
这是由于对AJAX的误解
更改:
返回json_encode($array)
用于:
echo json_编码($array)
您是否使用Firebug或类似工具查看您是否从Ajax请求中得到了预期的结果?如果
控制台.log(data)
返回空值,那么首先检查您的php脚本是否发送了有效的json。也发布您的php代码。如果数据未发送,是否最好包含发送数据的函数,而不是接收它的人?试试这个:var data=$.parseJSON(data);似乎OP需要执行POST请求。它仍然执行GET请求,而不是问题中的POST请求。@Heberfa:当然,但该数据在请求中表示为查询字符串参数,而不是POST数据。