2012-02-03 58 views
3

在進行AJAX調用之後,我正在重定向 - 使用以下代碼。但是,在AJAX完成後,它會給出錯誤警報;然後重定向。Jquery AJAX調用給出後重定向錯誤

callService($serviceUrl, $serviceName, 'POST');    
//redirecting to nextpage 
window.location.href = "nextPage.html"; 

function callService($serviceUrl, $serviceName, $method) { 
    ...... 

    $.ajax({ 
    url : $serviceUrl, 
    dataType : "json", 
    type : $method, 
    data : $requestData, 
    success : function (data) { 
     switch($serviceName) { 
      case 'getTopRated':  populateTopRated(data); 
         break; 
      case 'GetLatestScoop': populateLiveScoop(data); 
         break; 
      ..... 
     } 
     $.mobile.pageLoading(true); 
    }, 
    error : function(XMLHttpRequest, textStatus, errorThrown) { 
     alert("Error"); 
     $.mobile.pageLoading(true); 
    } 
    }); 

} 

有沒有辦法解決它 - 沒有修改函數?

+0

您的錯誤處理程序正在被調用。你可以通過查看textStatus和errorThrown字段來指定錯誤嗎? – Sid 2012-02-03 16:05:08

回答

3

等到ajax請求完成後再重定向到另一個頁面。由於您一旦調用servicerequestaborts,然後error處理程序被觸發,您將看到來自錯誤處理程序的alert消息,因此您立即重定向。移動代碼重定向ajaxsuccess回調它將工作。

function callService($serviceUrl, $serviceName, $method) { 
    ...... 

    $.ajax({ 
    url : $serviceUrl, 
    dataType : "json", 
    type : $method, 
    data : $requestData, 
    success : function (data) { 
     switch($serviceName) { 
      case 'getTopRated':  populateTopRated(data); 
         break; 
      case 'GetLatestScoop': populateLiveScoop(data); 
         break; 
      ..... 


      //redirecting to nextpage 
      window.location.href = "nextPage.html"; 
     } 
     $.mobile.pageLoading(true); 
    }, 
    error : function(XMLHttpRequest, textStatus, errorThrown) { 
     alert("Error"); 
     $.mobile.pageLoading(true); 
    } 
    }); 

} 
+0

+1,幾乎是我在試圖理解意圖之後,撓了撓頭。 :),其中一個想法是:如果你重定向,爲什麼要做ajax? – 2012-02-03 16:40:24

+0

我們也可以從完整的重定向:。但是,沒有其他方式沒有使功能callService() 更改! – 2012-02-03 16:41:31

+0

不,你只能在'callService'方法內部處理它。 – ShankarSangoli 2012-02-03 16:43:22