日期:2014-05-16  浏览次数:20763 次

Ajax的小问题
看到一段ajax实现实时添加数据的代码,写下来,测试一下,其中处理数据部分,代码不适用,所以自己简单写了几句,但是不出效果,检查了好几遍就是不出效果,希望大家可以检查出来,代码如下:

ajax_add.html
HTML code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>Ajax即时后台添加</title>
<script language="javascript" type="text/javascript">
    function initXmlHttpReq(){
        var browserVersion=navigator.appVersion;
        var xmlhttpReq;
        if(window.XmlHttpRequest){                                //IE7+、Firefox、Chrome、Safari 以及 Opera
            xmlhttpReq=new XmlHttpRequest();
        }else if(window.ActiveXObject){                        //IE6及更低版本
            var a=['MSXML2.XMLHTTP.5.0','MSXML2.XMLHTTP.4.0','MSXML2.XMLHTTP.3.0','MSXML2.XMLHTTP','MICROSOFT.XMLHTTP.1.0','MICROSOFT.XMLHTTP.1','MICROSOFT.XMLHTTP'];
            for (var i=0;i<a.length;i++){
                if(browserVersion.indexOf("MSIE 6.0")){
                    xmlhttpReq=new ActiveXObject("MSXML2.XMLHTTP");
                    break;
                }else{
                    xmlhttpReq=new ActiveXObject(a[i]);
                    if(xmlhttpReq){
                        break;
                    }
                }
            }
        }
        return xmlhttpReq;    
    }
    function addVote(){
        var xmlhttp=initXmlHttpReq();
        var vote=document.getElementById("vote").value;
        xmlhttp.onreadystatechange=function(){
            if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){
                alert("发表成功");
                showVote();
            }
        }
        xmlhttp.open("GET","ajax_php.php?action=add&vote="+vote,true);
        xmlhttp.send();
    }
    function showVote(){
        var xmlhttp=initXmlHttpReq();
        xmlhttp.onreadystatechange=function(){
            if((xmlhttp.readyState==4)&&(xmlhttp.status==200)){
                document.getElementById("myDiv").innerHTML.responseText;
            }
        }
        xmlhttp.open("GET","ajax_php.php?action=show",true);
        xmlhttp.send();
    }
</script>
</head>

<body>
    <div id="myDiv"></div>
    <input type="text" id="vote"/>
    <input type="button" onclick="addVote()" value="AddVote"/>
</body>
</html>



ajax_php.php

PHP code

<?php
global $ceshi;
if((isset($_GET['action']))&&('add'==$_GET['action'])){
    $ceshi=$_GET['vote'];
}else{
    echo $ceshi;
}
?>





------解决方案--------------------
为什么不用jquery的ajax呢
------解决方案--------------------
你是不是用ff测试的 ?
好像是xmlhttprequest对象不兼容 。
HTML code

function initXmlHttpReq(){
        var xmlhttpReq = false;
            try {
                xmlhttpReq = new XMLHttpRequest();
            } catch (trymicrosoft) {
            try {
                xmlhttpReq = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (othermicrosoft) {
            try {
                xmlhttpReq = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (failed) {
                xmlhttpReq = false;
              }
            }
        }    
        return xmlhttpReq;
    }

------解决方案-----