Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 提交搜索查询&;获取搜索结果而不刷新_Php_Javascript_Jquery - Fatal编程技术网

Php 提交搜索查询&;获取搜索结果而不刷新

Php 提交搜索查询&;获取搜索结果而不刷新,php,javascript,jquery,Php,Javascript,Jquery,我想提交搜索查询表单并获取搜索结果,而无需在同一页面上重定向/重新加载/刷新 我的内容是动态的,所以不能使用那些“提交联系人表单而不刷新页面,成功后回复”。这就是AJAX的用途。 在jQuery中(如果您正在寻找其他库,请道歉) 您可能希望从网上提供的数千本“面向初学者的AJAX”教程中的任何一本开始。用这个词在谷歌上搜索应该会让你走 首先,请尝试以下方法: 阅读完这些之后,请记住,您实际上不需要编写任何XHR处理代码。正如Jamie所指出的,jQuery或其他众多Javascript库可以极

我想提交搜索查询表单并获取搜索结果,而无需同一页面上重定向/重新加载/刷新

我的内容是动态的,所以不能使用那些“提交联系人表单而不刷新页面,成功后回复”。

这就是AJAX的用途。 在jQuery中(如果您正在寻找其他库,请道歉)


您可能希望从网上提供的数千本“面向初学者的AJAX”教程中的任何一本开始。用这个词在谷歌上搜索应该会让你走

首先,请尝试以下方法:


阅读完这些之后,请记住,您实际上不需要编写任何XHR处理代码。正如Jamie所指出的,jQuery或其他众多Javascript库可以极大地简化客户端AJAX代码。

如果您能在开始编写代码之前了解一些AJAX的基础知识,那就太好了。 Ajax是解决您的问题的精确方法。它异步地向服务器发出请求,获取结果,并且可以使用结果修改页面中的数据。这一切都是用JavaScript完成的

假设您有这样一个html:

<html>
<body>
<div id="myDiv"> your content area</div>
<button type="button" onclick="loadByAjax()">Change Content</button>
</body>
</html> 
<script type="text/javascript">
function loadByAjax()
{
     $.ajax({
          type: "POST",
          url: "yourserverpage.php",
          data: "searchkey=data_from_user_input",
          success: function(response_data){
          $('myDiv').html(response_data)
          }
          });
}
</script>

您的内容区域
更改内容
现在,您的javascipr代码如下:

<html>
<body>
<div id="myDiv"> your content area</div>
<button type="button" onclick="loadByAjax()">Change Content</button>
</body>
</html> 
<script type="text/javascript">
function loadByAjax()
{
     $.ajax({
          type: "POST",
          url: "yourserverpage.php",
          data: "searchkey=data_from_user_input",
          success: function(response_data){
          $('myDiv').html(response_data)
          }
          });
}
</script>

函数loadByAjax()
{
$.ajax({
类型:“POST”,
url:“yourserverpage.php”,
数据:“searchkey=来自用户输入的数据”,
成功:功能(响应数据){
$('myDiv').html(响应数据)
}
});
}
因此,基本上只要点击按钮,JavaScript就会被执行。它将调用php服务器端脚本,传递从用户输入获得的参数,检索响应数据并将其放入div中。 因此,您的页面将在不完全刷新的情况下更新


另外,请理解,我在这里使用jquery库实现Ajax功能。

为了提交表单,从数据库收集结果,并在不刷新页面、重定向或重新加载的情况下将其呈现给用户,您需要:

  • 使用Ajax将表单中的数据发布到php文件中

  • 后台文件将查询数据库,并获取他收到的数据的结果

  • 对于查询结果,您需要将其插入页面中的html元素中,以便将结果呈现给用户

  • 最后,您需要设置一些控制内容,以使样式和文档工作流能够顺利运行


  • 话虽如此,这里有一个有效的例子: 我们有一个表“persons”,其中有一个字段“age”和一个字段“name”,我们将搜索32岁的人。接下来,我们将在
    div
    中显示他们的姓名和年龄,并在
    表格中显示他们的姓名和年龄,表格背景为粉红色,文本非常大。
    为了正确地测试这一点,我们将有一个灰色的页眉,正文和页脚

    index.php

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    
    <html lang="pt" dir="ltr">
    
      <head>
    
        <title>Search And Show Without Refresh</title>
    
        <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
        <meta http-equiv="Content-Style-Type" content="text/css">
    
        <!-- JQUERY FROM GOOGLE API -->
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    
        <script type="text/javascript">
          $(function() {
            $("#lets_search").bind('submit',function() {
              var value = $('#str').val();
               $.post('db_query.php',{value:value}, function(data){
                 $("#search_results").html(data);
               });
               return false;
            });
          });
        </script>
    
      </head>
    
      <body style="margin:0;padding:0px;width:100%;height:100%;background-color:#FFFFFF;">
    
        <div style="width:1024px;margin:0 auto;height:100px;background-color:#f0f0f0;text-align:center;">
          HEADER
        </div>
        <div style="width:1024px;margin:0 auto;height:568px;background-color:#f0f0f0;text-align:center;">
          <form id="lets_search" action="" style="width:400px;margin:0 auto;text-align:left;">
            Search:<input type="text" name="str" id="str">
            <input type="submit" value="send" name="send" id="send">
          </form>
          <div id="search_results"></div>
        </div>
        <div style="width:1024px;margin:0 auto;height:100px;background-color:#f0f0f0;text-align:center;">
          FOOTER
        </div>
    
      </body>
    
    </html>
    
    <?php
    
    define("HOST", "localhost");
    
    // Database user
    define("DBUSER", "username");
    
    // Database password
    define("PASS", "password");
    
    // Database name
    define("DB", "database_name");
    
    // Database Error - User Message
    define("DB_MSG_ERROR", 'Could not connect!<br />Please contact the site\'s administrator.');
    
    ############## Make the mysql connection ###########
    
    $conn = mysql_connect(HOST, DBUSER, PASS) or die(DB_MSG_ERROR);
    
    $db = mysql_select_db(DB) or die(DB_MSG_ERROR);
    
    
    $query = mysql_query("
      SELECT * 
      FROM persons 
      WHERE age='".$_POST['value']."'
    ");
    
    echo '<table>';
    
    while ($data = mysql_fetch_array($query)) {
    
      echo '
      <tr style="background-color:pink;">
        <td style="font-size:18px;">'.$data["name"].'</td>
        <td style="font-size:18px;">'.$data["age"].'</td>
      </tr>';
    
    }
    
    echo '</table>';
    
    ?>
    
    
    搜索并显示而不刷新
    $(函数(){
    $(“#让我们搜索”).bind('submit',function(){
    var值=$('#str').val();
    $.post('db_query.php',{value:value},函数(数据){
    $(“#搜索结果”).html(数据);
    });
    返回false;
    });
    });
    标题
    搜索:
    页脚
    
    db_query.php

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    
    <html lang="pt" dir="ltr">
    
      <head>
    
        <title>Search And Show Without Refresh</title>
    
        <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=ISO-8859-1">
        <meta http-equiv="Content-Style-Type" content="text/css">
    
        <!-- JQUERY FROM GOOGLE API -->
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    
        <script type="text/javascript">
          $(function() {
            $("#lets_search").bind('submit',function() {
              var value = $('#str').val();
               $.post('db_query.php',{value:value}, function(data){
                 $("#search_results").html(data);
               });
               return false;
            });
          });
        </script>
    
      </head>
    
      <body style="margin:0;padding:0px;width:100%;height:100%;background-color:#FFFFFF;">
    
        <div style="width:1024px;margin:0 auto;height:100px;background-color:#f0f0f0;text-align:center;">
          HEADER
        </div>
        <div style="width:1024px;margin:0 auto;height:568px;background-color:#f0f0f0;text-align:center;">
          <form id="lets_search" action="" style="width:400px;margin:0 auto;text-align:left;">
            Search:<input type="text" name="str" id="str">
            <input type="submit" value="send" name="send" id="send">
          </form>
          <div id="search_results"></div>
        </div>
        <div style="width:1024px;margin:0 auto;height:100px;background-color:#f0f0f0;text-align:center;">
          FOOTER
        </div>
    
      </body>
    
    </html>
    
    <?php
    
    define("HOST", "localhost");
    
    // Database user
    define("DBUSER", "username");
    
    // Database password
    define("PASS", "password");
    
    // Database name
    define("DB", "database_name");
    
    // Database Error - User Message
    define("DB_MSG_ERROR", 'Could not connect!<br />Please contact the site\'s administrator.');
    
    ############## Make the mysql connection ###########
    
    $conn = mysql_connect(HOST, DBUSER, PASS) or die(DB_MSG_ERROR);
    
    $db = mysql_select_db(DB) or die(DB_MSG_ERROR);
    
    
    $query = mysql_query("
      SELECT * 
      FROM persons 
      WHERE age='".$_POST['value']."'
    ");
    
    echo '<table>';
    
    while ($data = mysql_fetch_array($query)) {
    
      echo '
      <tr style="background-color:pink;">
        <td style="font-size:18px;">'.$data["name"].'</td>
        <td style="font-size:18px;">'.$data["age"].'</td>
      </tr>';
    
    }
    
    echo '</table>';
    
    ?>
    

    我是新手,我甚至不懂基本知识。那么你能详细说明一下吗?既然你是在提交时绑定的,那么最好返回false以防止它以任何方式提交。搜索应该使用刷新完成。你必须学习基本的标准。@Spraspel上校,今天我看到用户讨厌点击页面,等待内容加载等等。。。因此,没有任何刷新解决方案可以使用;)@子母弹上校,你不了解我,也不了解我的工作,所以攻击是没有必要的!另一方面,我提到的是用户而不是我,我这么做是因为我参与的所有项目!(我在第一次和这一次都考虑过)@schraspel上校,此外,你是根据谷歌员工的决定表达你的个人意见?!?我真的相信用户是“老板”,如果用户不想刷新页面,页面就不能刷新!!你同意吗!??回复有点晚,但谷歌在搜索Hanx desau时不再刷新suggestion@desau,您的链接已断开。感谢Zuul提供的描述性回答。它确实帮助我理解了AJAX的角色。