2013-12-11 2 views
1

У меня есть код вроде этого - он в основном делает вызов AJAx, а затем отображает диалоговое окно. Когда ответ получен для диалогового окна вызова AJAX, будет обновлен результат или ошибка. Он отлично работает до сих пор. Но, если тайм-аут возникает для вызова AJAX, в диалоговом окне отображается сообщение об ошибке, а затем оно немедленно обновляет страницу (и это не приводит к закрытию действия диалога). Не знаете, как остановить автоматическое обновление страницы в случае таймаута. Любые предложения или материалы приветствуются. Благодарю.dojo.xhrget() таймаут приводит к автоматическому обновлению страницы. Как это остановить?

 var mainNode = dojo.create("div",{id:"mainNode"}); 

     var brNode = dojo.create("div",{innerHTML:"<br><br>"})    
     var resultNode = dojo.create("div", {id:"resultNode",innerHTML:"Copying..."}); 
     var infoNode = dojo.create("div", {id:"infoNode"}); 

     dojo.style(mainNode, "width","700px"); 
     dojo.style(mainNode, "height","auto"); 
     mainNode.appendChild(infoNode); 
     mainNode.appendChild(brNode); 
     mainNode.appendChild(resultNode); 


     var timeoutStr = nlsVar.FILEPUB_EXTENSION.TIMEOUT; 
     var timeoutVal = parseInt(timeoutStr); 
     console.log('timeout value ' + timeoutVal); 
     dojo.xhrGet({ 
      // The following URL must match that used to test the server. 
      url: "/BpFilePublisher/bpfilepub", 
      handleAs: "json", 
      timeout: timeoutVal, // Time in milliseconds 
      preventCache: true, 

      // The LOAD function will be called on a successful response. 
      load: function(response, ioArgs) { // 
        var str = json.jsonBeanStringify(response); 
        var infoNode = dojo.byId("infoNode"); 
        infoNode.innerHTML = response[0].info; 
        var resultNode = dojo.byId("resultNode"); 
        resultNode.innerHTML = response[0].result; 
        dojo.style(resultNode, "backgroundColor", "lightgreen"); 
        dojo.style(resultNode, "border", "1px green"); 
      }, 

      // The ERROR function will be called in an error case. 
      error: function(error, ioArgs) { // 
       console.log('error' + error); 
       console.log('error.responseText' + error.responseText); 
       var resultNode = dojo.byId("resultNode");    
       if (error.responseText) 
        resultNode.innerHTML = error.responseText; 
       else { 
        resultNode.innerHTML = 'Timeout occured. Please try again'; 
        isTimeout = true; 
        } 
        dojo.style(resultNode, "backgroundColor", "red"); 
        dojo.style(resultNode, "border", "1px");  

       }, 

      // Input parameters to the servlet 
      content: {fileName: fileName, fileId: fileId, srcCommUuid: srcCommId, bpCommId: bpCommUuid, action:action } 
     }); 

     var dialogBundle = lconn.core.DialogUtil.popupForm(
      nlsVar.FILEPUB_EXTENSION.COPYINTERNAL_DIALOG_TITLE, 
      mainNode, 
      '', 
      nlsVar.FILEPUB_EXTENSION.CANCEL_BUTTON_TITLE, 
      function() { 

      }, 
      function() { 
       dialogBundle.hide(); 
       location.reload(); 
      } 
     ); 

     dojo.addClass(dialogBundle._dialog.lotusSubmitNode, "lotusHidden"); 
     dojo.addClass(dialogBundle._dialog.lotusBorderNode, "mydialog"); 
    } 
}); 

ответ

0

Временное прерывание AJAX не должно приводить к обновлению страницы. Возможно, что-то еще вызывает это. Может быть location.reload()?

Смежные вопросы