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取值有個延時造成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章