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显示结果' ο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取值有个延时造成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值