在这里我们将会用一个姓名提示框案例来简单说明;

当用户在输入框中键入字符时,网页与 web 服务器进行通信,服务器返回提示信息,传给网页;

先看一下界面:

在html页面中:

思路:就是当用户在上面的输入框中键入a-z字符时,就会执行匹配姓名函数 "showHint()" 此时姓名匹配函数被"onkeyup" 事件触发调用AJAX,向服务器发送请求和接收数据。

具体的代码:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<h3>在输入框中尝试输入字母 a-z的任意字符:</h3>
<form action="">
输入姓名: <input type="text" id="txt1" onkeyup="showHint(this.value)" />
</form>
<p>提示信息: <span id="tip"></span></p> <script>
function showHint(str)
// 姓名匹配函数
{
var xmlhttp;
// 创建客户端请求对象的变量
if (str.length==0)
// 如果此时没有输入字符
{
document.getElementById("tip").innerHTML="";
// 如果输入框为空 (str.length==0),则该函数清空 tip 占位符的内容,并退出函数 return;
// 结束函数操作
}
// 如果输入框不为空,showHint() 函数执行以下任务: /*创建 XMLHttpRequest 对象
当服务器响应就绪时执行函数
把请求发送到服务器上的文件
请注意我们向 URL 添加了一个参数 q (带有输入框的内容)
*/
if (window.XMLHttpRequest)
// 兼容浏览器,分情况创建客户端请求对象
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
// ajax的执行状态函数
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
// 如果服务器响应完成时
{
document.getElementById("tip").innerHTML=xmlhttp.responseText;
// 将服务器响应发送到前端的数据填入到提示信息下;
}
}
xmlhttp.open("GET","运行php文件后赋值地址栏?号前的地址?q="+str,true);
// 客户端打开服务器的方式是get 路径 路径上所携带输入框中输入的信息 运行模式是异步的方式;
xmlhttp.send();
// 客户端向服务器发送信息
}
</script>
</body>
</html>
在php也就是服务器上,执行的操作
<?php
/**
* Created by PhpStorm.
* User: Administrator
* Date: 2018/10/26 0026
* Time: 下午 20:18
*/ // 书写提示姓名数组
$a=array("Anna","Brittany","Cinderella","Diana","Eva",
"Fiona","Gunda","Hege","Inga","Johanna","Kitty",
"Linda","Nina","Ophelia","Petunia","Amanda","Raquel","Cindy",
"Doris","Eve","Evita","Sunniva","Tove","Unni","Violet","Liza",
"Elizabeth","Ellen","Wenche","Vicky"); //从URL里面获取q参数,也就是用户输入提示框的信息;
$q=$_GET["q"];
$hint="";// hint是返回给前端/页面的数据 //如果输入框中有信息输入,那么就从姓名数组中查找是否有匹配项
if (strlen($q) > 0)
{ for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
//将输入进来的字符从头到结束都转换成小写字母,
//如果此时从头到尾姓名数组里面有和他相同的匀速匹配,
{
if ($hint=="")
{//如果此时提示信息为空
$hint=$a[$i];
// 将找的对应元素放入到提示数组中区
}
else
{ //否则就在提示数组的后面加“,”拼接找到的对应姓名里的元素的值;
$hint=$hint." , ".$a[$i];
}
}
}
} // Set output to "no suggestion" if no hint were found
//如果在姓名数组中没找到对应项,将提示输出设置为“没有建议”
if ($hint == "")
{
// 如果提示信息为空
$response="no reguest";
// 响应前端 发送给前端没有建议
}
else
{
$response=$hint;
// 否则 响应前端 将当前的提示数组赋值给前端,
} //输出响应
echo $response;
												

AJAX如何实现和后端的交互(网页如何与 web 服务器进行通信)的更多相关文章

  1. 前端与后端数据交互的方式之ajax

    前端与后端数据交互的方式之Ajax 对于前端学习而言,CSS+HTML+JavaScript的学习在自我学习的情况下掌握也不是很难,但是想要实现前后端的数据交互在没有指导的情况下学习会是一头雾水.接下 ...

  2. 两种方法实现asp.net方案的前后端数据交互(aspx文件、html+ashx+ajax)

    一个HTML页面只能显示HTML代码信息,不能与数据库进行数据的交互.asp.net方案提供了网页与数据库交互的方法,这里举出两种:①aspx文件 ②ashx文件+ajax技术 一.创建数据库 这里以 ...

  3. 前端ajax的各种与后端交互的姿势

    前端中常常用的与后端交换数据的话,通常是要用到ajax这种方法的 但是交互的方式有很多种,很多取决于你后端的属性,我这儿主要列举我目前项目比较常用的两种方式 --一个是我们通用的web api和控制器 ...

  4. content-type常见类型辨析(以ajax与springmvc前后端交互为例)

    博客搬家: content-type常见类型辨析(以ajax与springmvc前后端交互为例) 在http报文的首部中,有一个字段Content-type,表示请求体(entity body)中的数 ...

  5. 从MVC到Ajax再到前后端分离的思考

    前言 一位小妹去面试前端,前端leader问了"什么是ajax?",答:"接收后台的数据,然后然后自己填充和渲染样式":一位小哥去面试后台,技术经理问了&quo ...

  6. 基于Ajax技术的前后端Json数据交互方式实现

    前言 使用浏览器访问网站是日常生活中必不可少的一件事情,当我们在浏览器地址栏中输入网址后会看到网站的内容,那么这个过程中发生了什么?下面简单介绍下浏览器访问网站过程. 第一步:浏览器向DNS服务器发起 ...

  7. vue-Resource(与后端数据交互)

    单来说,vue-resource就像jQuery里的$.ajax,用来和后端交互数据的.可以放在created或者ready里面运行来获取或者更新数据... vue-resource文档:https: ...

  8. 前后端数据交互处理基于原生JS模板引擎开发

    json数据错误处理,把json文件数据复制到----> https://www.bejson.com/ 在线解析json 这样能直观的了解到是否是json数据写错,在控制台打断点,那里错误打那 ...

  9. 前后端API交互数据加密——AES与RSA混合加密完整实例

    前言 前段时间看到一篇文章讲如何保证API调用时数据的安全性(传送门:https://blog.csdn.net/ityouknow/article/details/80603617),文中讲到利用R ...

随机推荐

  1. python各种转义字符

  2. 【记录】VMware解决网络找不到服务器的问题

    本想在虚拟机上的Linux上练习安装Mysql8.0版本的,网络连不上的问题卡了N天简直 1. 点击虚拟机右键设置,虚拟机默认设置为NAT模式,这里无需修改. 2. 点击编辑,虚拟网络设置,勾选主机连 ...

  3. Java初始化块

    1.使用初始化块 [修饰符]{ //初始化块的可执行性代码 } 初始化块虽然也是Java类的一种成员,但它没有名字,也就没有标识,因此无法通过类.对象来调用初始化块.初始化块只在创建Java对象时隐式 ...

  4. java如何编写多线程

    1.如何实现多线程 1.1实现Runnable接口,实现run()方法. public class Main4 implements Runnable { public static void mai ...

  5. Bigger-Mai 养成计划,Python基础巩固二

    模块初识1.标准库2.第三方库import sys sys.path #自己的本文件名不可为sys.py#输出模块存储的环境变量sys.argv #打印脚本的相对路径sys.argv[2] #取第二个 ...

  6. P2178 [NOI2015]品酒大会

    思路 在后缀树上进行一些操作就好了 后缀树上LCA的maxlen就是两个后缀的LCP的长度了 然后统计每个点作为LCA的次数和最大值.次大值.最小值.次小值 然后就做完了 代码 #include &l ...

  7. Linux操作系统的VI命令

    Linux操作系统的VI命令 VI是Linux系统的一个文本编辑器,该编辑器可以通过使用VI命令来操作,从而完成对文本的编辑.熟练掌握一些常用的VI命令,可以大大简化编辑操作并提高操作Linux文本的 ...

  8. C语言--第1次作业

    1.本章学习总结 1.1思维导图 1.2本章学习体会及代码量学习体会 1.2.1学习体会 经过一周C语言的正式课堂学习,不同于暑期时扒视频囫囵吞枣式学习,林丽老师的讲解详细异常,尽管已经学习了一部分内 ...

  9. css中绝对定位和相对定位的区别

    先说个技巧一般用:子绝父相,即相对定位是给父级的,绝对定位的时候是给子级的. 一:绝对定位 position: absolute;绝对定位:绝对定位是相对于元素最近的已定位的祖先元素(即是设置了绝对定 ...

  10. docker笔记(2)-----容器连接

    2019-01-12  13:57:36 Dockerfile基本结构: 基础镜像内容:FROM指明base image 维护者信息: 镜像操作指令:RUN指令,每运行一条RUN指令,镜像添加新的一层 ...