【问题标题】:jQuery AJAX call to a database queryjQuery AJAX 调用数据库查询
【发布时间】:2012-03-02 13:50:24
【问题描述】:

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

    ) 
);

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

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

谢谢

【问题讨论】:

  • 您试图将您从服务器获得的 json 对象注入到标记中,而不进行任何转换,这是行不通的。无论如何,您是否检查了返回的 json,是否正确调用了成功回调?
  • 我强烈建议使用看起来不像 type-o 的可变名称。

标签: php jquery mysql ajax


【解决方案1】:

您的 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']),
    

    因此你只会得到一个结果(最后一个)。

    【讨论】:

    • 是的,没错,我可以通过放入我想要的数组的一部分来获取一个值,即[1]但是我该如何获得所有这些呢?
    【解决方案3】:

    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"
        ) 
    );
    

    【讨论】:

      猜你喜欢
      • 2014-05-24
      • 2019-08-15
      • 1970-01-01
      • 1970-01-01
      • 2012-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多