一个AJAX的问题

wufansheng 2009-02-06 03:06:21
function createXMLHttpRequest()
{
var xmlHttpRequest;
if (window.ActiveXObject)
{
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
xmlHttpRequest = new XMLHttpRequest();
}

return xmlHttpRequest;
}

oRequest = createXMLHttpRequest();

oRequest.open("get","Server.php",true);
oRequest.onreadystatechange = getCallback;
oRequest.send(null);

function getCallback()
{
if(this.readyState == 4)
{
}
}

如果是IE浏览器,则this.readyState会是个未定义值。是不是因为在IE中oRequest是个ActiveXObject对象,无法通过this来得到对象本身?还是其他原因?除了把oRequest当做一个全局变量,在onreadystatechange事件里面直接引用外,有没有其他方法?
...全文
101 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
街头小贩 2009-03-19
  • 打赏
  • 举报
回复
再者IE和FF捕获事件是完全不同的!
街头小贩 2009-03-19
  • 打赏
  • 举报
回复
哪你告诉我this在回调函数里代表什么?
lakesea 2009-03-19
  • 打赏
  • 举报
回复
楼主的问题有些。。。。
太难了,不晓得咋个回答。
一码平川 2009-02-06
  • 打赏
  • 举报
回复
如果是ff好用吗?你应该好好看一下this指针代表的含义,不用滥用this
常规的写法是:
<script>
var xmlHttpRequest;
function createXMLHttpRequest()
{
if (window.ActiveXObject)
{
xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
xmlHttpRequest = new XMLHttpRequest();
}

return xmlHttpRequest;
}

createXMLHttpRequest();

xmlHttpRequest.open("get","Server.php",true);
xmlHttpRequest.onreadystatechange = getCallback;
xmlHttpRequest.send(null);

function getCallback()
{
if(xmlHttpRequest.readyState == 4)
{
}
}

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧