这两天偶然看到有人问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显示结果' οnclick='ieEnableShow("ajaxshow.php",);'>
<input type='button' value='firefox ie都显示结果' οnclick='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取值有个延时造成。