ajax返回值的问题的一个例子

本文通过示例代码展示了如何在Internet Explorer和Firefox中使用AJAX获取并显示数据。针对两种浏览器的不同特性,提供了兼容性的解决方案。

这两天偶然看到有人问ajax返回值的问题,呵呵,恰巧我这几天也在做这方面的一个东西。顺便解决一下这问题

大家可以看看以下代码

<html>
<head>
<title>ajax测试</title>
<script>

// 生成xhr对象(兼容各种浏览器)
function createXHR()
{
var xhr;

try
{
xhr = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e)
{
xhr = false;
}
}
if(!xhr && typeof XMLHttpRequest != 'undefined') xhr = new XMLHttpRequest();

return xhr;
}

//得到要显示的ajax的取值(ie)
function ieShow(geturl)
{
var xhr;
xhr = createXHR();
var returnStr = '';
xhr.open("GET", geturl);

xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
returnStr = xhr.responseText;
}

xhr.send(null); //alert('');
return returnStr;
}


// 在指定块中显示字符
function showStr(str)
{
document.getElementById('show').innerHTML = str;
}

//在网页中显示ajax的取值(ie)
function ieEnableShow(geturl)
{
var str = ieShow(geturl);
showStr(str);
}

//兼容ff ie的方式
function FFIEShow(geturl, funName)
{
var xhr;
xhr = createXHR();
var returnStr = '';
xhr.open("GET", geturl);

xhr.onreadystatechange = function()
{
if(xhr.readyState == 4 && xhr.status == 200)
funName(xhr.responseText);
}

xhr.send(null);
}
</script>
</head>
<body>
<input type='button' value='ie显示结果' onclick='ieEnableShow("ajaxshow.php",);'>
<input type='button' value='firefox ie都显示结果' onclick='FFIEShow("ajaxshow.php", showStr);'>
<div id='show'></div>
</body>
</html>

'ajaxshow.php'文件的内容

<?php
echo '1,2,3,4';
?>

我是用php如果你用其它语言你可以自己改一下,很简单就是在网页中打印字符串'1,2,3,4'。

从以上代码中可以看出ie可以利用return来得到值。但firefox则不能,只能在readyState == 4 && status == 200时处理一个函数这个函数应当作为一个参数传递入函数。有个奇怪现象你如果去除红线部分的注释,firefox又可以取到值。估计是firefox使用ajax取值有个延时造成。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值