2014-04-05 38 views
0

如何獲得並區分$ .ajax錯誤?

我做一個$阿賈克斯,但它在控制檯上返回

「未捕獲的SyntaxError:意外的標記<」 或 「未捕獲的ReferenceError:未定義SSS」

可能是區分「SyntaxError」和「ReferenceError」? 還是類似的?

我需要做類似的東西:

$.ajax({ 
    type: "GET", 
    url: url, 
    dataType: "jsonp", 
    success: function(){  
    } 
    error: function(){ 

     if(_______ == 'SyntaxError'){ 
     } 
     if(_______ == 'ReferenceError'){ 
     } 

     }, 
}); 

是可能的?

對不起,我的英語,和小白的問題。 :\

+0

從此處不使用'jsonp'開始。 – raina77ow

+1

這是一個解析錯誤(無論是在'jsonp'響應中發送的是我的猜測),而不是AJAX相關的錯誤。 –

+0

這實際上是一個很好的問題,對於一般情況沒有簡單的答案,您可以檢查if(e instanceof SyntaxError){'並使用'error'的參數。像Bluebird這樣的好承諾庫可以包裝'.ajax'調用,並讓你使用類型化的catch子句。 –

回答

0

它就像本傑明Gruenenbaum評論。錯誤回調有三個參數。第三個是錯誤:

$.ajax({ 
    type: "GET", 
    url: url, 
    dataType: "jsonp", 
    success: function(){  
    }, 
    error: function(xhr, opt, err){ 
     if(err instanceof SyntaxError){ 
     } 
     if(err instanceof ReferenceError){ 
     } 
    }, 
}); 
+0

我不工作:(如果我做的console.log(ERR)的執行console.log顯示:。「jQuery20204397698985412717_1396744296811當時不叫」 。 – Inkeliz

+0

你說得對!我用跨站請求看到同樣的事情(http://jsfiddle.net/2XcMd/)在我測試本地磁盤上的HTML和目標之前('file:// ')。也許這是一個瀏覽器功能,其設計是爲了防止這種信息泄露? –