如何在不使用ajax刷新页面的情况下从数据库中检索数据

时间:2013-11-20 07:20:25

标签: javascript php jquery ajax

我有一个下拉框,它有两个客户端(例如:客户端a,客户端b),我在每个客户端表中有超过2000个数据,当选择客户端时我想从数据库中检索所有数据并显示在前端没有刷新,现在我刷新了window.location这个刷新页面。任何人都帮我怎么做谢谢

的Ajax

<script>
$(function() {    document.ready
    $("#client").on("change", function() {
        var ID=$(this).attr('id');
        var clientid=$("#client").val();
        $.ajax({

            type: "POST",
            data: {
                clientselect: $(this).val()
            },
            success: function(data) {
                $("#display").html(data);
                window.location = '?action=clientnetworkpricelist&clientid='+clientid+'';
                $("#flash").hide();
            }
        });
    });
});

</script>

选择框

 <select name="client" id="client" style="margin:-24px 0 0 1px;background-color:#E8E8E8;width:104px;position: absolute;"> 
   <option value="">Select Client</option>
<?php

$sql=mysql_query("select * from client_list");

$clientid=$_GET['clientid'];



while($row=mysql_fetch_assoc($sql))

{


    if(strlen($_GET['clientid'])>0 && $_GET['clientid']==$row['clientid']){
    print' <option id="client" name="client" value="'.$row['clientid'].'" selected>'.$row['clientid'].' </option>';}

    else{

            print' <option id="client" name="client" value="'.$row['clientid'].'" >'.$row['clientid'].' </option>';
    }

   }



   ?>


</select>

3 个答案:

答案 0 :(得分:1)

$.ajax({
                    async: false,
                    cache: false,
                    url: "your_web_address?action=clientnetworkpricelist&clientid="+clientid,
                    scriptCharset: "utf-8",
                    dataType: "html",
                    success: function (data) {
                        $("#display").html(data);
                        $("#flash").hide();
                    },
                    error: function (request, ajaxOptions, thrownError) {

                    }
                });

将网址更改为:

url:“http://www.yourpage.com/your_subpage?action=clientnetworkpricelist&clientid=”+ clientid

答案 1 :(得分:0)

我已经尝试过你的代码,实际上你在做什么,你改变你的网址,这就是为什么你在每次更改下拉选项时都会刷新的原因。

我稍微改变了您的选择代码,即我从if选项部分删除了select关键字,其次我在选择完成后添加了div,如下所示。

选择代码

<select name="client" id="client" style="margin:-24px 0 0 1px;background-color:#E8E8E8;width:104px;position: absolute;"> 
<option value="">Select Client</option>
<?php
$sql=mysql_query("select * from client_list");
$clientid=$_GET['clientid'];
while($row=mysql_fetch_assoc($sql))
{
if(strlen($_GET['clientid'])>0 && $_GET['clientid']==$row['clientid'])
{
print' <option id="client" name="client" value="'.$row['clientid'].'">'.$row['clientid'].' </option>';
}
else{
print' <option id="client" name="client" value="'.$row['clientid'].'">'.$row['clientid'].' </option>';
}
}
?>
</select>
<div id="result"></div>

现在我已经更改了你的ajax代码。这在下面给出。您需要再创建一个文件yourfile.php,此文件包含您要显示的数据。

AJAX代码

<script>
$(function() { document.ready
    $("#client").on("change", function() {
      var clientid=$("#client").val();
    $.ajax({
            type:"post",
            url:"yourfile.php",
        data:"title="+clientid,
        success:function(data){
             $("#result").html(data);
        }
    }); 
    });
});
</script>

为了您的理解,我添加了您可以轻松理解的yourfile.php。

<强> yourfile.php

mysql_connect("localhost","root","");
mysql_select_db("yourdbname");

$value  = $_POST['title'];
$query  = mysql_query("SELECT * from client WHERE id=$value");
$result = mysql_fetch_array($query);
echo $result['clientdata'] ;

就是这样。

我认为它可以帮助你。

由于

答案 2 :(得分:0)

您在代码中犯了一些错误。首先,在while循环中为多个元素设置ID。请从所有选项标签中删除ID attr,并将attr仅保留为select标签,如下所示:

<select name="client" id="client" style="margin:-24px 0 0 1px;background-color:#E8E8E8;width:104px;position: absolute;"> 
   <option value="">Select Client</option> 
   <option value="1">value 1</option> 
   <option value="2">value 2</option>
   ...
</select>

其次,您在脚本中使用了clientid变量,但没有收集值。设置clientid的值如下:

var clientid = $('#client').find(':selected').attr('value');

现在请检查,它现在应该工作。感谢