2012-03-02 69 views
0

我有一個AJAX功能如此:jQuery的AJAX調用數據庫查詢

function admin_check_fn(type) 
{ 

    //$("#notice_div").show(); 

    //var allform = $('form#all').serialize(); 

    $.ajax({ 
     type: "POST", 
     //async: false, 
     url: "<?php bloginfo('template_url'); ?>/profile/adminquery_check.php", 
     data: { type: type }, 
     //data: 'code='+code+'&userid='+userid, 
     dataType: "json", 
     //dataType: "html", 

     success: function(result){ 
      var allresult = result.res 
      $('#result').html( allresult ); 

      alert(allresult); 
      //$("#notice_div").hide(); 
     } 
    }) 
} 

和服務器端:

$queryy="SELECT * FROM wp_users"; 
$name = array();  
$resultt=mysql_query($queryy) or die(mysql_error()); ?> 

<?php while($rowss=mysql_fetch_array($resultt)){ 

    $name = $rowss['display_name']; 

} 

echo json_encode(array( 

    "res" => array($rowss['display_name']), 
    "fvdfvv" => "sdfsd" 

    ) 
); 

基本上出於某種原因沒有顯示所有返回值從查詢到數據庫中的用戶表。它工作時,我查詢其中只有一個條目的另一個表,所以即時通訊認爲它可能是一個事實有一個數組它不正確解析?

只是想知道是否有人遇到這個問題?

感謝

+0

你試圖注入你從服務器到標記沒有任何改造得到JSON對象,這是行不通的。無論如何,你檢查了你回來的json,並且正確調用了成功回調嗎? – mamoo 2012-03-02 13:54:49

+0

我強烈建議使用看起來不像type-o的可變名稱。 – 2012-03-02 14:01:58

回答

3

您的ajax成功將返回的數據視爲html,但它是json。

var allresult = result.res 
/* assumes allResult is html and can be inserted in DOM*/ 
$('#result').html( allresult ); 

您需要解析JSON創建HTML,或從服務器返回的HTML

而且PHP循環:

$name = $rowss['display_name']; 

應該更像:

$name[] = $rowss['display_name']; 
2

你總是覆蓋名稱:

<?php while($rowss=mysql_fetch_array($resultt)) { 
    $name = $rowss['display_name']; 
} 

但是,這部分是不是你的循環中:

"res" => array($rowss['display_name']), 

因此,你只能得到一個結果(最後一個)。

+0

是的,對,我可以通過放入我想要的數組的一部分來獲取值[1]但我怎麼去得到它所有? – JamesG 2012-03-02 14:00:09

1

Smamatti有一個好點。

要解決這個問題:

<?php 
$query = "SELECT * FROM wp_users"; 
$names = array();  
$result = mysql_query($query) or die(mysql_error()); 

while($rows = mysql_fetch_array($result)){ 
    $names[] = $rows['display_name']; 
} 

echo json_encode(array( 
    "res" => $names, 
    "fvdfvv" => "sdfsd" 
    ) 
);