2013-04-17 62 views
0

我需要從PHP文件中檢索一個數組,該文件是一個返回到數組中的SQL查詢。 我用json_encode();對它進行了編碼並將其返回。<Solved>如何使用Jquery和PHP從.ajax HTTP請求中檢索數據?

這裏是我的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>'); 
        }); 
       }) 
     }); 
    }); 
}); 

我得到的成功的標籤內,但數據是回來了空。 我必須使用什麼來獲取數據數組?

UPDATE:

我對這個問題,並採取大家的時間抱歉。 JS代碼工作正常,主要問題是我對Ajax的理解不夠。 我唯一做錯的是我返回的是json數組而不是打印。代碼保留在這裏爲每個人都感興趣的東西類似於這些。 感謝所有試圖解決問題的人,我再次爲你浪費時間而感到抱歉。

+1

您是否使用了Firebug或類似軟件來查看您是否獲得了期望的回退Ajax請求? –

+0

如果'console.log(data)'返回null,則檢查您的php腳本是否正在發送有效的json。 –

+1

也發佈你的PHP代碼。 –

回答

1

回答我的問題在PHP腳本簡單地改變「返回或結束」線。 這是由於誤解了AJAX而發生的。

變化:

返回json_encode($陣列);

爲:

回波json_encode($陣列);

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其中名稱字段是你想要的唯一項目

的insted的字段的名稱

如果您想通過get方法送東西做您可以使用Firebug(一個Firefox extencion)調試,看看項目DOM extruture

如下

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

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

    }); 
}); 
+0

似乎OP需要做POST請求。 –

+0

它仍然執行GET請求,而不是像問題中的POST請求。 – adeneo

+0

@Heberfa:當然,但該數據在請求中表示爲查詢字符串參數,而不是POST數據。 –

0

我認爲這可能是由UTF8-BOM(字節順序標記)造成的。物料清單被添加到json字符串的開頭,這會使其無效。

嘗試將文檔轉換爲不含BOM的UTF8,然後再轉一次。

欲瞭解更多信息,請參閱所以這個其他線程:json_decode returns NULL after webservice call

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(){} 
     });    
    }); 
相關問題