知识点1【cgi的概述】
要想 printf的结果 交给服务器 而不是终端 需要条件:
知识点2【cgi的计算器案例】(GET异步实现)
框图:
cgi获取服务器GET方式发来的数据记得
//获取服务器收到的数据 如果是GET方式 数据直接使用getenv获取
//getenv的参数为:“QUERY_STRING”
char *data = getenv(“QUERY_STRING”);//data=10+20
idnex.html
DATA2:
result:
calc.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) { //获取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;
}
//拼筹请求报文GET
var url="/cgi-bin/calc.cgi?";//"/cgi-bin/calc.cgi?10+20"
url += data1;
arg==1? (url+="+"):(url+="-");
url+=data2;
alert("url="+url);
//创建xmlHttpRequest对象
var xmlhttp = getXMLHttpRequest();
//设置回调函数
xmlhttp.onreadystatechange=function () {
if(xmlhttp.status==200 && xmlhttp.readyState==4)
{
var ret = xmlhttp.responseText;
document.getElementById("ret").value = ret;
}
}
//open
xmlhttp.open("GET",url, true);
//send
xmlhttp.send();
}
calc.c—>gcc calc.c -o calc.cgi
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
//用printf输出
printf(“content-type:text/html\n\n”);
//获取服务器收到的数据 如果是GET方式 数据直接使用getenv获取
//getenv的参数为:"QUERY_STRING"
char *data = getenv("QUERY_STRING");//data=10+20
int d