Ajax onreadystatechange在4版本以下的firefox中不能使用ajax同步请求

时间:2012-08-15 13:47:55

标签: ajax http request synchronous

我正在使用ajax和jquery发送同步http请求

我必须使用同步请求,因为我想在评估服务器端脚本的结果后从ajax函数返回一些值。

我知道同步请求会冻结浏览器,但由于我的要求,我将不得不做这个请求。

我也知道在同步请求中没有使用onreadystatechange函数我们应该在发送请求之后或者在send函数之下评估我们的结果。通过这样做,我的代码处于工作状态。

但是,我的问题是,当我使用 onreadystatechange 功能时,它正在使用firefox> = 4 版本但无法在firefox 4下工作版本。

请。帮助我找出代码或浏览器是否存在问题。

我现在无法找到这个bug我很无助......请帮忙 这是我的代码

function test(txt_obj) {  
    var keywords = txt_obj.value;
    var SHttpRequestObject = false;  
    var url = "/speller/server-scripts/ifmisspelled_words.html" + '?keywords=' + keywords);  
    var speller_res = 0;  
    if (window.XMLHttpRequest){  
    SHttpRequestObject = new XMLHttpRequest();  
    } else if (window.ActiveXObject){  
    SHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");  
    }  
    SHttpRequestObject.open("POST", url, false);  
    if (SHttpRequestObject){  
    SHttpRequestObject.onreadystatechange = function() {  
    if (SHttpRequestObject.readyState == 4 && SHttpRequestObject.status == 200)  
    {  
    var result = eval("(" + SHttpRequestObject.responseText + ")");  
    if(result.error) {  
    speller_res = 1;  
    } else if(result.word_exist) {  
    speller_res = 1;  
    }  
    else if(result.word_not_exist)  {  
    speller_res = 0;  
    }  
    }  
    };  
    }  
    SHttpRequestObject.send(null);  
    return speller_res;  

    }  

1 个答案:

答案 0 :(得分:2)

来自MDN

  

的onreadystatechange

     

警告:不得在本机代码中使用此功能。你也不应该   将此用于同步请求。