2013-06-04 82 views
0

我在使用jQuery(v1.9.1)ajax時遇到了問題。jQuery Ajax失敗;文件正確加載

這裏是非常簡單的JS(common.js):

var BASE_URL = window.location.protocol + '//' + window.location.host + '/'; 

$(document).ready(function(){ 
    //load menu 
    $.ajax({ 
     type : 'GET', 
     url : BASE_URL + 'menu.json', 
     dataType: 'json' 
    }) 
    .done(function(){alert('D');}) 
    .fail(function(){alert('F');}) 
    .always(function(){alert('A');}); 
}); 

據Firebug的文件(menu.json)是否正確裝入。但問題在於我總是收到警報消息FA

那麼爲什麼這是非常簡單的代碼不工作?我無法弄清楚。

如果這裏需要的是把對應的HTML部分:

<!DOCTYPE html> 
<html> 
    <head> 
     ... 
     <script type="text/javascript" src="js/jquery.js"></script> 
     <script type="text/javascript" src="js/common.js"></script> 
    </head> 
.... 

兩個JavaScript文件被正確加載。

UPDATE

這裏是menu.json內容(是它的靜態)

[ 
    { 
     "name": "Home", 
     "url": "#main" 
}, 
{ 
     "name": "WTF", 
     "url": "#wtf" 
    } 
] 
+3

第一個猜測:'menu.json'不包含有效的JSON。我們可以看到它的內容嗎? –

回答

3

只是因爲轉會成功並不意味着AJAX調用一樣。很有可能你的迴應是無效的JSON。您可能還需要確保Web服務器爲JSON返回正確的Content-type,即application/json

編輯證實 - JSON要求密鑰(和字符串值)在雙引號

的另一個常見原因是跨來源資源共享安全問題被封閉,儘管這不應該是一個因爲您是從當前頁面的同一網站下載的因素。

而且,真的沒有必要指定BASE_URL - 只使用路徑/menu.json

+0

好的。只需在它周圍放置雙引號(我會在第二次更新該帖子)。但它仍然無法正常工作。我想這是因爲在「Response-Header」部分沒有「Content-Type」標題。見[這裏](http://data.a-morillon.de/images/jq_ajax.JPG) –

+0

所以剛剛發現錯誤。它仍然只是json文件中的一個錯誤。謝謝你指點我。 –