Sinatra上的JQuery GET请求总是会导致错误

时间:2011-02-16 16:53:28

标签: jquery ajax http sinatra

我正在使用Sinatra来托管一项简单的服务。这是我的整个申请:

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: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 / hello HTTP / 1.1”200 12
  Referer - &gt; /你好

这似乎很好,但无论我如何尝试调整内容,我都只能调用错误回调 - 永远不会成功。

我有两个问题:
1)我做错了什么? 2)我应该如何调试这样的问题?传递给错误回调的对象只是一个Object,我无法获取有关错误的信息。

谢谢!

2 个答案:

答案 0 :(得分: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代码的末尾,则代码也有效。

答案 1 :(得分: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事件和附加到锚标记的live href url时,我收到了此错误。