我有以下行为随机表现的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;
}

附加信息:我有多个音频文件。第一次播放音频文件时,我会第一次收到故障警报(即使播放了音频),但是在第二次播放音频文件的过程中,会显示成功警报。

最佳答案

你可以试试这个吗?

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);
 }

10-07 19:10
查看更多