Ajax回调函数随机运行。我做错了什么?

时间:2014-05-15 04:46:03

标签: javascript ajax

我遵循随机行为的ajax函数。有时会显示警告success finally。在其他情况下,第二个警报即 显示Failure: my status is 500

promptId从调用函数传递。我查看了prompturlpromptId。有效值 在两种情况下都显示promptId(成功和失败)。此外,我尝试播放的音频文件在两种情况下都会播放(成功和失败)。 我无法弄清楚显示此警报的随机行为的原因。

如果500 error即将到来,则意味着找不到资源,但我的应用程序能够访问资源(即播放音频文件)。

function ajax_playPrompt(promptId) {
alert(promptId)


 var playPromptUrl = soapUrl + "?action=playPrompt&promptId=" + escape(promptId) +     "&parentSessionId=" + parentSessionId;
alert(playPromptUrl);
playPrompt_http_request = getNewHttpRequest('text/plain');
playPrompt_http_request.onreadystatechange = callback_ajax_playPrompt;  
playPrompt_http_request.open("GET", playPromptUrl, true);   
playPrompt_http_request.send(null);
 }

function callback_ajax_playPrompt() {
    if (playPrompt_http_request.readyState != 4) {
        alert("Returning bcause not 4");        
        return;
    }

    if (playPrompt_http_request.status == 200) {
        alert("Success finally");        
    } 
    else {        
        alert("Failure:My status is "+playPrompt_http_request.status );   // this gives status as 500     
    }
}

还支持我正在使用的不同浏览器:

// to provide support for different browsers.
function getNewHttpRequest(contentType) {
    var myRequest;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        myRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        myRequest = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (myRequest.overrideMimeType) {
        myRequest.overrideMimeType(contentType);
    }
    return myRequest;
}

其他信息:我有多个音频文件。当我第一次播放音频文件时,我第一次收到故障警报(即使播放了音频),但如果我再次播放,第二次播放成功警报。

1 个答案:

答案 0 :(得分:0)

你能试试吗?

function ajax_playPrompt(promptId) {
       alert(promptId)
        var playPromptUrl = soapUrl + "?action=playPrompt&promptId=" + 
          escape(promptId) +     "&parentSessionId=" + parentSessionId;
       alert(playPromptUrl);
       var playPrompt_http_request = getNewHttpRequest('text/plain');
       playPrompt_http_request.onreadystatechange = function {
               if (playPrompt_http_request.readyState != 4) {
                      alert("Returning bcause not 4");        
                      return;
                  }

                     if (playPrompt_http_request.status == 200) {
                     alert("Success finally");        
              } else {        
                      alert("Failure:My status is "+playPrompt_http_request.status );
             }
       };  
       playPrompt_http_request.open("GET", playPromptUrl, true);   
       playPrompt_http_request.send(null);
 }