在学习js的类,把ajax封装成了类,以下是主代码
<script>
var ajax = new class_ajax();
window.onload = function()
{
sdmessage();
}
function sdmessage()
{
alert(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.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)
{
request.send(data);
}
this.change = function(handle)
{
request.onreadystatechange = function()
{
this.state = request.readyState;
alert(request.readyState);
this.status = request.status;
alert(request.status);
this.text = request.responseText;
handle();
}
request.send(null);
}
}服务器端Php代码
<?php
if ($_GET['get'] == 'json')
echo 'hello';
?>
ajaxjavascriptxmlhttprequest
<script>
var ajax = new class_ajax();
window.onload = function()
{
sdmessage();
}
function sdmessage()
{
alert(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.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)
{
request.send(data);
}
this.change = function(handle)
{
request.onreadystatechange = function()
{
this.state = request.readyState;
alert(request.readyState);
this.status = request.status;
alert(request.status);
this.text = request.responseText;
handle();
}
request.send(null);
}
}服务器端Php代码
<?php
if ($_GET['get'] == 'json')
echo 'hello';
?>
ajaxjavascriptxmlhttprequest
解决方案 »
- |zyciis| 如何让target="cart"的窗口页面,在第二次点击的时候是激活状态的,谢谢
- 第一次使用JS的面向对象,为什么后声明的类把先声明的类的属性覆盖了??
- 求助!!!!
- 简单问题:js中float大小比较
- js中如何得到jsp页面中的ArrayList的值?
- 请教高手,如何实现禁止连续点击同一链接,在线等。。。
- **********parent.mainFrame.parent.history.go(-1)这句话有问题吗?@@@@@@@@@
- 怎样实现点击一个超级连接不是打开,而是下载??
- JavaScript中有类似于VBScript中的DateDiff的function吗?
- easyui datagrid添加一行,并设置它的默认值
- 字符转成数组
- 销毁事件疑问为什么销毁无效呢
改成相对路径试下
哦,是了,忘记了,我在我电脑上该了host,把一个临时域名直接指向了192.168.1.63。
然后文件里直接请求192.168.1.63。
域名不一样,应该被判断为跨域请求了,所以拒绝提交,调试器给出的错误提示也是NS_ERROR_FAILURE: Failure
我百度了一下,好像是跨域请求的意思
类的公有变量应该怎么声明?
是不是我的方法不正确?
你昨天的发的你以前封装的ajax类如果改成function Ajax(){ 变量函数}的方式应该怎么写?我从网上没有找到正规的js类的声明方法,所以你的类的写法我没看懂
this.change = function(handle) {
var _this = this;
request.onreadystatechange = function() {
_this.state = request.readyState;
//alert(request.readyState);
_this.status = request.status;
//alert(request.status);
_this.text = request.responseText;
handle();
}
//request.send(null);
}
哦,意思是我在类里的function中使用this,那么this指的就是函数自己了是吗?
比如我在类里有函数open,那么在open函数里使用this就是指的open函数自己是吧。想想也是,我声明类也是用的function,然后里面嵌套的还是function,this确实不应该代表外层的function
LZ先打好基础吧,你在open中使用this,this不是指向open函数,而是ajax对象,你不信的话打印一下
alert(this==this.open)//alert(this==arguments.callee);后面这个也可以
alert(this==ajax)
看一下第一个是不是false,第二个是不是true
真是谢谢你了~顺带着再问你另一个问题吧:
我在html主结构里的form中加属性onsubmit="xxx(); return false;"
表单项里用input type="submit"
然后调试,当我打开网页,第一次点按钮很正常,页面无刷新,指定函数被执行。
然而当我把我的函数里alert弹出的提示框关了以后再点一次按钮,这次函数就不会被执行了,并且页面被刷新,很奇怪。我浏览器的原因吗?我用的最新版的火狐
这应该不是浏览器的问题,因为你的代码出问题了,程序中断了,没有执行到return false;所以表单提交了。仔细检查一下吧。