2011-02-16 70 views
3

我正在使用Sinatra來承載簡單的服務。這是我的整個應用程序:Sinatra上的JQuery GET請求總是會導致錯誤

require 'sinatra' 

get '/hello' do 
    'Hello world!' 
end 

然後我在我的./public目錄中的一個HTML文件,試圖對我的服務的GET請求:

<html> 
<head> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script> 
    <script type="text/javascript"> 
     $(document).ready(function() { 
      $("a").click(function(event) { 
       $.get("/hello", function() { alert("first success"); }) 
         .success(function() { alert("second success"); }) 
         .error(function(jqXHR) { alert("error: " + jqXHR); }); 
      }) 
     }); 
    </script> 
</head> 
<body> 
<a href="">Link</a> 
</body> 
</html> 

當我點擊我的HTML頁面上的鏈接,我在服務器日誌中看到以下內容:

0:0:0:0:0:0:1%0 - - [16/Feb/2011 10:37:42]「GET/hello HTTP/1.1「200 12 0.0030
localhost - - [16/Feb/2011:10:3​​7:42 CST] 「GET /你好HTTP/1.1」 200 12
的Referer - > /你好

這似乎不錯,但無論我怎樣努力調整的事情,我只能拿錯誤回調被調用 - 永遠不會成功。

我有兩個問題:
1)我在做什麼錯了?
2)我應該如何去調試這樣的問題?傳遞給錯誤回調的對象只是一個對象,我無法得到有關錯誤的信息。

謝謝!

回答

2

在測試過程中,我遇到了沒有return false;的鏈接的點擊代碼問題,所以頁面會繼續重新加載。隨着Firebug,我得到了錯誤uncaught exception: [Exception... "Component returned failure code: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.getAllResponseHeaders]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS frame :: http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js :: anonymous :: line 16" data: no]

當我將鏈接從<a href="">Link</a>更改爲<a>Link</a>時,代碼工作(我得到了第一個和第二個成功消息)。另外,如果我按原樣離開鏈接並將return false;添加到$("a").click代碼的末尾,那麼代碼也起作用。

+0

謝謝!並感謝使它聽起來像我不愚蠢:) – codefinger 2011-02-16 18:59:03

1
Error: uncaught exception: 
[Exception... "prompt aborted by user" nsresult: "0x80040111 
(NS_ERROR_NOT_AVAILABLE)" location: 
"JS frame :: resource:///components/nsPrompter.js :: openTabPrompt :: line 457" data: no] 

我得到這個錯誤,當我有兩個onclick事件和附加到錨標記的實時href url。

相關問題