之前在喜悦国际村上看到一篇Ajxa的实现 http://www.phpx.com/happy/thread-123327-1-2.html,原理讲的很明白,但应用不够灵活,自己改写了一下:
[code]<script type="text/java script">
var http_request = false;
//创建xmlHTTP的对像
//url -- 处理发送数据的函数如add.php
//functionName -- js得到处理结果返回值时相关的处理
//queryString -- 发送的queryString 可用js构造
//httpType -- 发送类型 默认为post
function makeRequest(url, functionName, queryString, httpType) {
http_request = false;
if (!httpType) httpType = "post";
if (window.XMLHttpRequest) { // Non-IE...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/plain');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Cannot send an XMLHTTP request');
return false;
}
var changefunc="http_request.onreadystatechange = "+functionName;
eval (changefunc);
http_request.open(httpType, url, true);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
if(httpType=="post"){
http_request.send(queryString);
}else{
http_request.send(NULL);
}
}
//得到返回值
function getReturnedText () {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var messagereturn = http_request.responseText;
alert(messagereturn);
return messagereturn;
} else {
alert('There was a problem with the request.');
}
}
}
</script>[/code]
下面举例:
[code]<script type="text/java script">
function InTAB() {
if (http_request.readyState == 4) {
if (http_request.status == 200) {
var result = http_request.responseText;
if (result) {
document.getElementById('Inner').innerHTML=result;//返回值
}
} else {
alert('There was a problem with the request.');
}
}
}
function Ajax(){
var title=document.getE;ementById('myform').title.value;
makeRequest('ajax.php',InTAB,"title="+title);
}
</script>
可以实现讲变量title发送给ajax.php,然后得到返回值(InTAB中的result),然后通过InTAB将返回值写入id为Inner的对象里(如<div id="Inner"></div>)[/code]
需要注意的问题:
1.函数Ajxa和InTAB是可以灵活运用的
2.alax.php编码应该为utf-8格式,如果其中包含了其他php或者html文件,也应该编码为utf-8,否则中文乱码!也可以在
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
后加
http_request.setRequestHeader("Content-Type","text/html");
http_request.setRequestHeader("Content-Type","gb2312");
3.返回值中如果含有java script不能被执行,我试过eval函数,没成功,待解决....