我正在使用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:37:42 CST]“GET / hello HTTP / 1.1”200 12
Referer - &gt; /你好
这似乎很好,但无论我如何尝试调整内容,我都只能调用错误回调 - 永远不会成功。
我有两个问题:
1)我做错了什么?
2)我应该如何调试这样的问题?传递给错误回调的对象只是一个Object,我无法获取有关错误的信息。
谢谢!
答案 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时,我收到了此错误。