jQuery AJAX调用数据库查询

时间:2012-03-02 13:50:24

标签: php jquery mysql ajax

我有一个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"

    ) 
);

基本上由于某种原因,它没有将查询中的所有返回值显示到数据库中的users表。当我查询另一个只有一个条目的表时,它可以工作,所以我认为这可能与某个数据没有正确解析的事实有关吗?

只是想知道是否还有其他人遇到过这个问题?

谢谢

3 个答案:

答案 0 :(得分: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']; 

答案 1 :(得分:2)

您始终会覆盖名称:

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

但是这部分不在你的循环中:

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

因此,您只能得到一个结果(最后一个)。

答案 2 :(得分: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"
    ) 
);