HTML+JS+PHP 原生 Ajax 登录请求完整示例

作者:清欢时间:2026-10-28 08:52:51浏览:434

本文展示如何使用原生 HTML、JavaScript 和 PHP 实现一次完整的 Ajax 异步请求。通过 XMLHttpRequest 对象发送用户名和密码,后端 PHP 接收参数并查询数据库,最终返回验证结果。代码包含浏览器兼容性处理、状态监听及简单的登录跳转逻辑,适合学习前端异步通信基础。

原生 Ajax 请求概述

本文将演示一个基于原生技术的 Ajax 请求完整流程。尽管 jQuery 等库简化了 Ajax 操作,但理解底层原生实现对于掌握前端技术至关重要。示例将分为 HTML、JavaScript 和 PHP 三个部分进行说明,数据库部分需读者自行配置。



首先是 HTML 结构部分:


代码如下:

 
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>一次简单的Ajax请求</title>
<script language="javascript" src="js/ajaxTest.js"></script>
</head>
<body>
用户名:<input id="userName" type="text"></input>
密码:<input id="passWord" type="password"></input>
<span id="showInputError" style="color:red;font-weight: bold;"></span><br>
<input type="button" value="登录" onclick="showSelect()">
</body>
</html>

前端 JavaScript 实现

接下来是 JavaScript 逻辑部分:


代码如下:

 
/** 
* 普通Ajax的完整访问过程
*/ 
var xmlHttp
function showSelect()//登录按钮点击后执行这个方法
{ 
var userName=document.getElementById("userName").value;
var passWord=document.getElementById("passWord").value;
if (userName.length==0)//验证输入用户名是否为空
{ 
document.getElementById("showInputError").innerHTML="用户名不能为空";//提示用户名不能为空
return
} 
xmlHttp=GetXmlHttpObject()
if (xmlHttp==null)
{ 
alert ("Browser does not support HTTP Request")
return
} 
var url="ajaxTest.php"//设置要提交action到后台的那个处理请求的文件名
url=url+"?userName="+userName+"&passWord="+passWord//为这个路径加上参数用户名和密码
url=url+"&sid="+Math.random()//为这个路径加上一个随机数
xmlHttp.onreadystatechange=stateChanged//每当 readyState 改变时,就会触发 onreadystatechange 事件,readyState 属性存有 XMLHttpRequest 的状态信息
xmlHttp.open("GET",url,true)//定义请求的参数
xmlHttp.send(null)//发送请求
} 
function stateChanged()
{ 
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")//
//0: 请求未初始化
//1: 服务器连接已建立
//2: 请求已接收
//3: 请求处理中
//4: 请求已完成,且响应已就绪
{ var a= xmlHttp.responseText;//把相应数据赋值给a
if(a=="yes"){
self.location='Main.php';//跳转到Main.php
}else{
document.getElementById("showInputError").innerHTML="用户名或密码错误";//提示用户名或密码错误
} 
} 
} 
function GetXmlHttpObject()
{ 
var xmlHttp=null;
try
{ 
// Firefox, Opera 8.0+, Safari
xmlHttp=new XMLHttpRequest();
} 
catch (e)
{ 
// Internet Explorer
try
{ 
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
} 
catch (e)
{ 
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
} 
} 
return xmlHttp;
} 

后端 PHP 处理逻辑

最后是 PHP 后端处理部分:


代码如下:

 
<?php
$userName=$_GET["userName"];
$pwd=$_GET["passWord"];
$con = mysql_connect("localhost","root","123456");
mysql_select_db("my_test", $con);
mysql_query("set names utf8");
$sql="SELECT * FROM Userinfo WHERE userName='".$userName."' AND pwd='".$pwd."'";
$result=mysql_query($sql);
$select=mysql_num_rows($result);
$a="no";
if ($select>0){$a="yes";}
echo $a;
mysql_close($con);
?> 
作者最新文章