PHP 和AJAX

PHP 和AJAX

AJAX是什么

  • AJAX代表 异步 的JavaScript和 XML 。AJAX是一种利用XML、HTML、CSS和JavaScript创建更好、更快和更交互式的Web应用程序的新技术。

  • 传统的Web应用程序使用同步请求来传输信息。这意味着您填写一个表单,点击提交,然后被重定向到一个新页面,其中包含来自服务器的新信息。

  • 使用AJAX,当点击提交时,JavaScript将向服务器发出请求,解释结果并更新当前屏幕。在最纯粹的意义上,用户甚至不会知道任何东西被传输到服务器上。

要完整地学习AJAX,请参考AJAX教程。

PHP和AJAX示例

为了清楚地演示使用Ajax和PHP从数据库中访问信息有多简单,我们将动态地构建MySQL查询并在”ajax.html”上显示结果。但在继续之前,让我们先做一些准备工作。使用以下命令创建一张表。

注意 - 我们假设您具有足够的权限来执行以下MySQL操作。

CREATE TABLE `ajax_example` (
   `name` varchar(50) NOT NULL,
   `age` int(11) NOT NULL,
   `sex` varchar(1) NOT NULL,
   `wpm` int(11) NOT NULL,
   PRIMARY KEY  (`name`)
)

现在使用下面的SQL语句将以下数据转储到此表中。

INSERT INTO `ajax_example` VALUES ('Jerry', 120, 'm', 20);
INSERT INTO `ajax_example` VALUES ('Regis', 75, 'm', 44);
INSERT INTO `ajax_example` VALUES ('Frank', 45, 'm', 87);
INSERT INTO `ajax_example` VALUES ('Jill', 22, 'f', 72);
INSERT INTO `ajax_example` VALUES ('Tracy', 27, 'f', 0);
INSERT INTO `ajax_example` VALUES ('Julie', 35, 'f', 90);

客户端HTML文件

现在让我们来编写客户端HTML文件,名为ajax.html,它将包含以下代码

<html>
   <body>

      <script language = "javascript" type = "text/javascript">
         <!--
            //Browser Support Code
            function ajaxFunction(){
               var ajaxRequest;  // The variable that makes Ajax possible!

               try {
                  // Opera 8.0+, Firefox, Safari
                  ajaxRequest = new XMLHttpRequest();
               }catch (e) {
                  // Internet Explorer Browsers
                  try {
                     ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
                  }catch (e) {
                     try{
                        ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
                     }catch (e){
                        // Something went wrong
                        alert("Your browser broke!");
                        return false;
                     }
                  }
               }

               // Create a function that will receive data 
               // sent from the server and will update
               // div section in the same page.

               ajaxRequest.onreadystatechange = function(){
                  if(ajaxRequest.readyState == 4){
                     var ajaxDisplay = document.getElementById('ajaxDiv');
                     ajaxDisplay.innerHTML = ajaxRequest.responseText;
                  }
               }

               // Now get the value from user and pass it to
               // server script.

               var age = document.getElementById('age').value;
               var wpm = document.getElementById('wpm').value;
               var sex = document.getElementById('sex').value;
               var queryString = "?age=" + age ;

               queryString +=  "&wpm=" + wpm + "&sex=" + sex;
               ajaxRequest.open("GET", "ajax-example.php" + queryString, true);
               ajaxRequest.send(null); 
            }
         //-->
      </script>

      <form name = 'myForm'>
         Max Age: <input type = 'text' id = 'age' /> <br />
         Max WPM: <input type = 'text' id = 'wpm' />
         <br />

         Sex: <select id = 'sex'>
            <option value = "m">m</option>
            <option value = "f">f</option>
         </select>

         <input type = 'button' onclick = 'ajaxFunction()' value = 'Query MySQL'/>

      </form>

      <div id = 'ajaxDiv'>Your result will display here</div>
   </body>
</html>

注意 − 在查询中传递变量的方式是根据HTTP标准以及形式A。

URL?variable1=value1;&variable2=value2;

现在,以上的代码将为您提供下面给出的屏幕。

注意 − 这只是一个虚拟屏幕,不会起作用。

最大年龄:

最大WPM:

性别: 男 女

服务器端 PHP 文件

现在您的客户端脚本已经准备好了。现在我们需要编写服务器端脚本,该脚本将从数据库中获取年龄、WPM和性别,并将其发送回客户端。将以下代码放入 “ajax-example.php” 文件中。

<?php

   dbhost = "localhost";dbuser = "dbusername";
   dbpass = "dbpassword";dbname = "dbname";

   //Connect to MySQL Server
   mysql_connect(dbhost,dbuser, dbpass);

   //Select Database
   mysql_select_db(dbname) or die(mysql_error());

   // Retrieve data from Query String
   age =_GET['age'];
   sex =_GET['sex'];
   wpm =_GET['wpm'];

   // Escape User Input to help prevent SQL Injection
   age = mysql_real_escape_string(age);
   sex = mysql_real_escape_string(sex);
   wpm = mysql_real_escape_string(wpm);

   //build query
   query = "SELECT * FROM ajax_example WHERE sex = 'sex'";

   if(is_numeric(age))query .= " AND age <= age";

   if(is_numeric(wpm))
   query .= " AND wpm <=wpm";

   //Execute query
   qry_result = mysql_query(query) or die(mysql_error());

   //Build Result String
   display_string = "<table>";display_string .= "<tr>";
   display_string .= "<th>Name</th>";display_string .= "<th>Age</th>";
   display_string .= "<th>Sex</th>";display_string .= "<th>WPM</th>";
   display_string .= "</tr>";

   // Insert a new row in the table for each person returned
   while(row = mysql_fetch_array(qry_result)) {display_string .= "<tr>";
      display_string .= "<td>row[name]</td>";
      display_string .= "<td>row[age]</td>";
      display_string .= "<td>row[sex]</td>";
      display_string .= "<td>row[wpm]</td>";
      display_string .= "</tr>";
   }
   echo "Query: " .query . "<br />";

   display_string .= "</table>";
   echodisplay_string;
?>

现在尝试在“Max Age”或任何其他框中输入有效的值,然后点击“查询MySQL”按钮。

Max Age:

Max WPM:

Sex: 男性 女性

如果您成功完成了这节课,那么您就知道如何同时使用MySQL、PHP、HTML和JavaScript来编写Ajax应用程序。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程