0

我正在学习在 jquery 中发送获取请求。以下是发出 get 请求的代码块。我在我的 servlet 中检查了 get 请求已成功发出,但未调用回调函数。我无法弄清楚问题所在。

$.get('http://localhost:8080/PC_controlo/StatusServlet?id=1001',
function(data){
alert('hello');
});

浏览器网络选项卡显示了这一点

[01:21:26.759] GET http://localhost:8080/PC_controlo/StatusServlet?id=1001 [HTTP/1.1 200 OK 1ms]

+

这就是我在我的 servlet 中所做的。

PrintWriter out = response.getWriter();
            out.write("Working");
            out.close();

and .fail(msg){ alert('Failed with message:'+JSON.stringify(msg)); 给出了以下信息

Failed with message: {"readyState":0,"responseText":"","status":0,"statusText":"error"}

提前致谢 :)。

4

3 回答 3

2

我用 Google.com 替换 URL 做了一些测试,我遇到了同样的问题。我注意到如果你使用 .done()、.always() 和 .error(),你可能会更幸运地弄清楚到底发生了什么。看看这个 JSFiddle:

http://jsfiddle.net/gQfsd/

$.get('http://www.google.com/')
.done(function(data) {
    alert('Success! Data loaded: ' + data);   
})
.fail(function(msg) {
    alert('Failed with message: ' + JSON.stringify(msg));
})
.always(function() {
    alert('Always Alerts');
});
于 2013-08-15T20:02:45.360 回答
1

最可能的情况是你的请求没有成功完成,所以你的成功处理函数回调没有被调用,因为没有成功。

根据jQuery docs $.get的成功处理函数是:(强调我的)

请求成功时执行的回调函数。

为了更好地控制 AJAX 请求的错误处理,通常建议使用$.ajax它,您可以阅读此处的文档。这将允许您使用error在请求由于某种原因无法完成时触发的回调。

$.get只是一种委托给幕后的快捷方法$.ajax


为什么您的请求失败?没有线索。那是在您的浏览器和您正在与之交谈的服务器之间。这可能是一百万件事。检查浏览器开发控制台的网络选项卡,查看请求和响应的样子。

于 2013-08-15T19:44:54.030 回答
-1

可能是呼叫本身的通信错误,或者由于某种原因呼叫失败。也检查失败:

$.get('http://localhost:8080/PC_controlo/StatusServlet?id=1001')
 .success(function(result) {alert('success'); })
.error(function(jqXHR, textStatus, errorThrown) {alert(textStatus) });
于 2013-08-15T19:49:27.967 回答