0

jqueryでgetリクエストを送信することを学んでいました。以下は、get 要求を行うコードのブロックです。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]

+

これは、サーブレットで行ったことです。

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

および .fail(msg){ alert('Failed with message:'+JSON.stringify(msg)); 次のメッセージをくれました

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

前もって感謝します :)。

4

3 に答える 3

2

URL を Google.com に置き換えていくつかのテストを行ったところ、同じ問題が発生しました。.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 に答える