我想把AJAX封装到类里面去,可是又不知道该如何写程序,写了一段却跑不起来,谁来帮我看下这段都有什么错误
<html>
<head>
<meta charset="utf-8" />
<title>AJAX Login Example</title>
<script src="http://192.168.1.63/common/class_ajax.js"></script>
<script>
// <![CDATA[
window.onload = function()
{
var ajax = new class_ajax();
}

function handle()
{
if (ajax.state == 4)
{
if (ajax.staus == 200)
{
document.write("This is function handle");
}
}
}

function sendmessage()
{
ajax.open("http://192.168.1.63/login/json.txt");
ajax.handle = handle;
ajax.send(NULL); }
// ]]>
</script>
</head>
<body>
<form>
<input type="button" onsubmit="sendmessage(); return FALSE;" />
</form>
</body>
</html>下面的类的函数class_ajax.js
function class_ajax()
{
var request;
var browser = navigator.appName;
this.state;
this.status;
this.handle;
this.text; if(browser != "Microsoft Internet Explorer")
{
request = new XMLHttpRequest();
}else{
var arrVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
for (var i=0; i < arrVersions.length; i++)
{
try
{
request = new ActiveXObject(arrVersions[i]);
}
catch(exception)
{
}
}
} this.open = function(var url, var method = 0)
{
if (method === 0)
{
return request.open("GET", url, true);
}
else
{
return request.open("POST", url, true);
}
}

this.send = function(var data)
{
return send(data);
} this.change = function()
{
request.onreadystatechange = onreadystatechange;
} var onreadystatechange(var state, var handle)
{
this.state = request.readyState;
this.status = request.status;
this.text = request.responseText;
this.handle(); }
}
javascriptajaxxmlhttprequest

解决方案 »

  1.   

    问题太多了,形参不要加var,JS形参没有默认值的。this.open = function(var url, var method = 0)this.open = function(url, method)
    var onreadystatechange = function(state, handle)
        {
            this.state = request.readyState;
            this.status = request.status;
            this.text = request.responseText;
            this.handle();
     
        }问题太多了,LZ还是先把JS的基础打好
      

  2.   


    这是我以前封装的一个,用法和jQuery的ajax用法类似。方法
    Ajax.get(url[,data],fn) //get请求
    Ajax.post(url[,data],fn)  //post请求
    Ajax.ajax({url:url,data:data,fn:fn,type:type})
    Ajax.abort()  //取消参数说明:
    url    请求的地址
    data   请求的数据
    fn     回调函数
    type   请求的类型
      

  3.   


    还在吗?你的看不太懂~我又修改了下我的,不过还是有个问题,回调函数那里总是提示我我传进去的函数指针不是一个函数。你帮看一下这里怎么回事
    <script>
    var ajax = new class_ajax();
    window.onload = function()
    {
    sdmessage();
    }


    function sdmessage()
    {
    ajax.open("http://192.168.1.63/login/json.php?get=json", "GET");
    ajax.change(function()
    {
    if (ajax.state == 4)
    {
    if (ajax.status == 200)
    {
    document.write(ajax.text);
    }
    }
    })
    ajax.send(null); }
    </script>
    function class_ajax()
    {
    var request;
    this.state;
    // this.handle;
    this.status;
    this.text; var browser = navigator.appName;
    if(browser != "Microsoft Internet Explorer")
    {
    request = new XMLHttpRequest();
    }else{
    var arrVersions = ["MSXML2.XMLHttp.5.0", "MSXML2.XMLHttp.4.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp", "Microsoft.XMLHttp"];
    for (var i=0; i < arrVersions.length; i++)
    {
    try
    {
    request = new ActiveXObject(arrVersions[i]);
    }
    catch(exception)
    {
    }
    }
    } this.open = function(url, method)
    {
    return request.open(method, url, true);
    }

    this.send = function(data)
    {
    return request.send(data);
    } this.change = function(handle)
    {
    request.onreadystatechange = function(handle)
    {
    this.state = request.readyState;
    this.status = request.status;
    // this.text = request.responseText;
    this.text = "hello ok!";
    handle(); //执行到这里就提示handle不是一个函数!怎么修改才可以通过?
    }
    }
    }
      

  4.   


    request.onreadystatechange = function(handle){}
    改成
    request.onreadystatechange = function(){}