什么是Ajax?
一种快速实现动态网页的技术。
操作过程是什么?
首先你得创建一个服务器(下面是一个简单的nodejs服务器)
var http = require('http');
var fs = require('fs') ;
http.createServer(
function(req,res){
console.log(req.url)
if(req.url=="/"){
fs.readFile('Ajax.html',function(error,data){
if(error){
console.log(error);
res.end(error.toString())
}else{
res.end(data.toString())
}
})
}
}
).listen(8088,fn(){console.log('这是回调函数')})
创建一个默认页面(路径置于nodejs.exe同等位置、名字见上)
……
<body>
<button onclick='loadData()'></button>
</body>
……
网页创建通信对象
<script>
function loadData(){
var httpTool;
if(window.XMLHttpRequest) {
httpTool = new XMLHttpRequest()
} else {
httpTool = new ActiveXObject("Microsoft.XMLHTTP")
}
网页发送请求消息
httpTool.open('get', '自定义的有意义字符串');
httpTool.send()
网页监听服务器传回数据
httpTool.onreadystatechange = function() {
if(httpTool.readyState==4) {
if(httpTool.status == 200){
console.log(httpTool.responseText);
}else if(httpTool.status == 404){
console.log(404)
}else{
console.log('error:'+httpTool.status);
}
console.log(httpTool.responseText);
}else{
}
}
}
</script>
Ajax传送数据的一个不足(JSONP产生了?)
尝试用以下的代码创建服务器,不创建网页(注意这里没有创建对象进行监听了,
这有个名称叫做跨域访问)
var http = require('http');
http.createServer(
function(req,res){
var data = '{"name":"Shawn","age":18,"0":"NULL"}';
if(req.url=="/ThisIsSendFromServer"){
res.end(data);
}
if(req.url=="/ThisIsFnSendFromServer"){
res.end('fromServer('+data+')');
}
}
).listen(8088);
http:
<html>
……
<body>
<script src='http://localhost:8088/ThisIsSendFromServer'></script>
</body>
</html>
<html>
……
<body>
<script>
fromServer(data){
console.log(data);
}
</script>
<script src='http://localhost:8088/ThisIsFnSendFromServer'></script>
</body>
</html>