1、QUERY_STRING:在浏览器端以GET的方法输入的数据,数据的内容就是url问号后的内容
2、CONTENT_LENGTH:在浏览器端以POST方法输入的数据的字节数,数据的内容通过标准输入获取

案例:不停的获取当前温度
index.html
- <html>
- <head>
- <title>table</title>
- <meta charset="UTF-8">
- <!--这是描述 js中的函数来之哪个js文件-->
- <script type="text/javascript" src="00_js.js"></script>
- </head>
- <body>
- 当前的温度值:<label id="wendu">0.0</label>
- <br>
- <input type="button" onclick="timer_fun(1);" value="开启定时器">
- <input type="button" onclick="timer_fun(0);" value="停止定时器">
-
- </body>
- </html>
00_js.js
- var my_timer;
- function timer_fun(arg)
- {
- if(arg == "1")//开启定时器
- {
- //每1秒 就调用一次 my_fun()函数
- my_timer = setInterval( "my_fun()" ,1000 );//定时单位毫秒
- }
- else if(arg == "0")//关闭定时器
- {
- //清除定时器
- clearInterval(my_timer);
- }
- }
- function my_fun()
- {
- //Math.random产生一个0~1的随机数浮点数
- //Math.round 四舍五入 取整
- var num =Math.round( Math.random()*100 );
- document.getElementById("wendu").innerHTML = num;
- }
运行结果:

(1)Date对象方法
getFullYear():返回当前年份
getMonth():返回当前月份,0~11
getDay():返回星期中的某一天,0~6,0表示周日
getDate():返回一月中的某一天
getHours():返回当前时间的小时,0~23
getMinutes():返回当前时间的分钟,0~59
getSeconds():返回当前时间的秒,0~59
index.html
- <html>
- <head>
- <title>table</title>
- <meta charset="UTF-8">
- <!--这是描述 js中的函数来之哪个js文件-->
- <script type="text/javascript" src="01_js.js"></script>
- </head>
- <body onload="get_time();">
- 当前的时间为:
- <div id="div"></div>
-
- </body>
- </html>
01_js.js
- function get_time()
- {
- setInterval("get_time_fun()", 1000);
- }
- function get_time_fun()
- {
- var d = new Date();
- //在js中 去写网页
- var text= "
";- //首行
- text += "
时 分 秒 " - //第一行
- text += "
";- text += d.getHours();
- text += "
";- text += d.getMinutes();
- text += "
";- text += d.getSeconds();
- text += "
"; - text += "
"; -
- document.getElementById("div").innerHTML= text;
- }
运行结果:

执行常见的算数任务

知识点4【string对象】
String对象用于处理文本(字符串)
字符串是 JavaScript 的一种基本的数据类型。
String 对象定义了大量操作字符串的方法,例如从字符串中提取字符或子串,或者检索字符等
常用方法
charAt()返回在指定位置的字符
indexOf()检索字符串
substr()从起始索引号提取字符串中指定数目的字符串
substring()提取字符串中两个指定的索引号之间的字符串


案例:例如有:"2020:nz2001:good" 提取:号之间的字符串
index.html
- <html>
- <head>
- <title>table</title>
- <meta charset="UTF-8">
- <!--这是描述 js中的函数来之哪个js文件-->
- <script type="text/javascript" src="02_js.js"></script>
- </head>
- <body onload="my_string();">
-
- </body>
- </html>
02_js.js
- function my_string()
- {
- var text="2020:nz2001:good";
- //write讲字符串写入到浏览器上
- document.write("字符串的长度:"+text.length+"
"); - document.write("第0个字符为:"+text.charAt(0)+"
"); -
- var start = 0;
- var stop = 0;
-
- while(1)
- {
- //寻找:的位置
- stop = text.indexOf(":", start);
- if(stop == -1)
- {
- //提取最后一个字符串
- var tmp = text.substring(start,text.length);
- document.write("提取的内容为:"+tmp+"
"); - break;
- }
-
- var tmp = text.substring(start,stop);
- document.write("提取的内容为:"+tmp+"
"); -
- //步进条件
- start = stop +1;
- }
-
- }
运行结果:


常用的函数:isNaN Number String
js获取网页上数据 以及讲数据 局部刷新到网页上
AJAX 不是语言 而是(基于js和xml)技术
概述:
1、AJAX是 Asynchronous JavaScript And XML的缩写
2、AJAX 是一种用于创建快速动态网页的技术
3、AJAX 不是新的编程语言,而是一种使用现有标准的新方法
4、AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面
5、AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等
浏览器与服务器通信采用的就是AJAX技术,AJAX核心是XMLHttpRequest对象

简易版:

异步流程:
1、创建对象
2、设置回调函数 ,fun函数
3、open 创建服务器请求
4、send 向服务器发送请求,
5、服务器有结果会自动调用fun回调函数
在回调函数里面根据服务器返回的响应信息 更新用户界面
- function getXMLHttpRequest()
- {
- var xmlhttp = null;
- if (window.XMLHttpRequest)//自动检测当前浏览器的版本,如果是IE5.0以上的高版本的浏览器
- {// code for IE7+, Firefox, Chrome, Opera, Safari
- xmlhttp=new XMLHttpRequest();//创建请求对象
- }
- else如果浏览器是底版本的
- {// code for IE6, IE5
- xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");//创建请求对象
- }
- return xmlhttp;//返回请求对象
- }
在js文件中开始定义这个函数,其他js函数直接调用就能创建一个异步请求对象
Onreadystatechange 每个(服务器的)状态改变时都会触发这个事件处理器,通常会调用一个JavaScript函数
服务器的状态:
readyState:请求的状态。0 = 未初始化,1 = 正在加载,2 = 已加载,3 = 交互中,4 = 完成
status:服务器的HTTP状态码(200对应OK,404对应Not Found(未找到))
状态的改变会触发异步函数,调用回调函数。
不是每一种状态改变都要处理,一般在readyState 状态值为4,status状态值为200的时候,处理服务器应答,所以在回调函数里写一个判断,判断readyState 为4,status为200,再做处理
服务器的应答:
responseText 和 responseXML就是服务器的反馈的结果
| 属 性 | 描 述 |
| onreadystatechange | 每个状态改变时都会触发这个事件处理器 通常会调用一个JavaScript函数 |
| readyState | 请求的状态。0 = 未初始化,1 = 正在加载,2 = 已加载, 3 = 交互中,4 = 完成 |
| responseText | 服务器的响应,表示为一个字符串 |
| responseXML | 服务器的响应,表示为XML。这个对象可以解析为一个DOM对象 |
| status | 服务器的HTTP状态码(200对应OK,404对应Not Found(未找到)) |
| statusText | HTTP状态码的相应文本(OK或Not Found(未找到)等等) |
标准的XMLHttpRequest对象的方法
| 方 法 | 描 述 |
| abort() | 停止当前请求 |
| getAllResponseHeaders() | 把HTTP请求的所有响应首部作为键/值对返回 |
| getResponseHeader("header") | 返回指定首部的串值 |
| open(“method”, “url”, true) | 建立对服务器的请求。method参数可以是GET、POST。url参数可以是相对URL或绝对URL。 true:异步;false:同步 |
| send(content) | 向服务器发送请求 |
| setRequestHeader("header", "value") | 把指定首部设置为所提供的值。在设置任何首部之前必须先调用open() |
- //想从服务器上请求文件a.txt
- var url = "a.txt?data";
- xmlhttp.open("GET",url,true);//true异步 false同步
- //GET方式:
- xmlhttp.send(不要传任何数据);
-
- //POST方式:
- xmlhttp.send(data);
index.html
- <html>
- <head>
- <title>table</title>
- <meta charset="UTF-8">
- <!--这是描述 js中的函数来之哪个js文件-->
- <script type="text/javascript" src="03_js.js"></script>
- </head>
- <body>
- 文件的内容:<label id="label"></label>
- <br>
- <input type="button" value="获取文件内容" onclick="get_file_fun();">
- </body>
- </html>
03_js.js
- function getXMLHttpRequest()
- {
- var xmlhttp = null;
- if (window.XMLHttpRequest)//自动检测当前浏览器的版本,如果是IE5.0以上的高版本的浏览器
- {// code for IE7+, Firefox, Chrome, Opera, Safari
- xmlhttp=new XMLHttpRequest();//创建请求对象
- }
- else如果浏览器是底版本的
- {// code for IE6, IE5
- xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");//创建请求对象
- }
- return xmlhttp;//返回请求对象
- }
- function get_file_fun()
- {
- //1、创建xmlHttpRequest对象
- var xmlhttp = null;
- xmlhttp = getXMLHttpRequest();
-
- //2、设置服务器响应的回调函数
- xmlhttp.onreadystatechange = function(){
- //xmlhttp.readyState==4 && xmlhttp.status==200 标识服务器处理完成
- if(xmlhttp.readyState==4 && xmlhttp.status==200)
- {
- //获取服务器的结果 xmlhttp.responseXML才是服务器的应答
- //获取服务器的结果 xmlhttp.responseText才是服务器的应答
- var ret = xmlhttp.responseText;
- //局部更新网页上的label
- document.getElementById("label").innerHTML = ret;
- }
- }
-
- //3、open
- var url="./file/a.txt";
- xmlhttp.open("GET", url, true);//异步方式
-
- //4、send
- xmlhttp.send();
- }
运行结果:

CGI是任何具备标准输入、输出、环境变量的语言编写并生成的可执行文件。
CGI是通用网关接口(Common Gateway Interface);是HTTP服务器与其它程序进行“交谈”的工具
通过CGI接口就能在服务器端运行其他的程序。
1、通过浏览器将用户请求送到服务器
2、服务器接收用户请求并交给CGI程序处理
3、CGI程序把处理结果传送给服务器
4、服务器把结果送回到浏览器
(1)CGI程序通过标准输入(stdin)、标准输出(stdout)实现与web服务器间信息的传递
(2)环境变量为Web服务器和CGI接口之间约定的,用来向CGI程序传递一些重要的参数


CGI传送给Web服务器的信息可以用各种格式,通常是以HTML文本或者XML文本的形式
(1)传输HTML 文本第一行输出的内容必须是"content-type:text/html\n\n"
(2)传输XML文本第一行输出的内容必须是”content-type:text/xml\n\n”
(3)还有其他的一些格式:JIF(image/gif)、JPEG(image/jpeg)、AVI(video/avi)
两个重要的CGI环境变量:
- //可以直接读取到数据
- char *data = getenv("QUERY_STRING");//data-->"10+20"
- 1、首先的到数据的长度
- char *len = getenv("CONTENT_LENGTH");
- 2、根据长度 从标准输入设备 获取内容
- char data[128]="";
- fgets(data,atoi(len)+1, stdin);//"10+20"
index.html
- <html>
- <head>
- <title>table</title>
- <meta charset="UTF-8">
- <!--这是描述 js中的函数来之哪个js文件-->
- <script type="text/javascript" src="04_js.js"></script>
- </head>
- <body>
- data1:<input type="text" id="data1">
- <br>
- data2:<input type="text" id="data2">
- <br>
- 结果:<label id="ret"></label>
- <br>
- <input type="button" value="add" onclick="calc_fun(1);">
- <input type="button" value="sub" onclick="calc_fun(0);">
-
- </body>
- </html>
04_js.js
- function getXMLHttpRequest()
- {
- var xmlhttp = null;
- if (window.XMLHttpRequest)//自动检测当前浏览器的版本,如果是IE5.0以上的高版本的浏览器
- {// code for IE7+, Firefox, Chrome, Opera, Safari
- xmlhttp=new XMLHttpRequest();//创建请求对象
- }
- else如果浏览器是底版本的
- {// code for IE6, IE5
- xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");//创建请求对象
- }
- return xmlhttp;//返回请求对象
- }
- function calc_fun(arg)
- {
- //1、获取网页输入框的数据data1 data2
- var data1 = document.getElementById("data1").value;
- var data2 = document.getElementById("data2").value;
- //判断data1 data2是否合法
- if(isNaN(data1) || isNaN(data2) )
- {
- document.getElementById("data1").value="";
- document.getElementById("data2").value="";
- alert("请输入有效的数值");
- return;
- }
-
- //组包请求报文url "/cgi-bin/calc.cgi?10+20" "/cgi-bin/calc.cgi?10-20"
- var url="/cgi-bin/calc.cgi?";
- url +=data1;
- if(arg == "1")//加
- {
- url +="+";
- }
- else if(arg == "0")//减
- {
- url +="-";
- }
- url+=data2;
- alert("url:"+url);
-
- //创建一个xmlHttpRequest对象
- var xmlHttp = null;
- xmlHttp = getXMLHttpRequest();
-
- //设置回调函数
- xmlHttp.onreadystatechange=function(){
- if(xmlHttp.readyState == 4 && xmlHttp.status==200)
- {
- //获取服务器的结果
- var ret = xmlHttp.responseText;
- //将ret赋值给label
- document.getElementById("ret").innerHTML=ret;
- }
- }
-
- //open
- xmlHttp.open("GET", url, true);
-
- //send
- xmlHttp.send();//将请求url发送给服务器
-
- }
04_calc.c
- #include<stdio.h>
- #include<stdlib.h>
- int main()
- {
- //传输HTML 文本第一行输出的内容必须是"content-type:text/html\n\n"
- printf("content-type:text/html\n\n");
-
- //获取服务器的数据 GET方式 QUERY_STRING
- char *data = getenv("QUERY_STRING");//data-->"10+20"
-
- //解析data
- int data1=0,data2=0;
- char ch = 0;
- sscanf(data,"%d%c%d", &data1, &ch, &data2);
- if(ch == '+')//加法运算
- {
- //将处理的结果 发送给服务器
- printf("%d\n", data1+data2);
- }
- else if(ch == '-')//减法运算
- {
- //将处理的结果 发送给服务器
- printf("%d\n", data1-data2);
- }
-
- return 0;
- }
gcc 04_calc.c -o calc.cgi
浏览器访问结果:
