私は、jQuery 1.8.0を使用してJavaサーブレット(正確にはStruts 1アクション)に対して従来のajaxリクエストを行うWebサイトを開発しています。Jacksonで作成されたjsonを受け取る必要があります。
ほとんどの場合、すべてが正常ですが、Firefox 17は応答を受信しないようで、Windowsのタスクマネージャーでプロセスを終了するまでハングします。Firebugでリクエストが送信されたこと、およびOC4Jのログで、サーブが呼び出されて応答が送信されたことがわかりますが、応答は受信されません。タイムアウトがあっても、jQuery ajaxエラーメソッドが呼び出されることはなく、Firefoxは完全にブロックされたままになります。
アドオンを無効にしてFirefoxを再起動しようとしましたが、それでも同じ問題が発生します。
最も奇妙なのは、この問題がIEでもChromeでも発生しないことです。
私のコードは非常に古典的であるため、要求されない限り、コードを投稿しません。
すでにこの問題に直面している人はいますか?それともそれについての手がかりがありますか?
ありがとう。
編集
私のコードは非同期なので、Firefoxがこのようにぶら下がってはいけません。わかりません。
尋ねられたコード:
Javascript
$.ajax({
type : 'POST',
url : 'calculate.do?action=career',
timeout: 40000,
data : {
"data": JSON.stringify(obj)
},
success: function(json){
// do stuff with json, like setting some field's values
},
error: function(xhr, ajaxOptions, thrownError){
// error message somewhere in the page
}
);
Strutsアクション:
private static final String A_JSON_STRING = "{\"msg\" : \"success\", "
+ "\"code\" : \"0\"}";
public ActionForward career(final ActionMapping mapping,
final ActionForm form, final HttpServletRequest request,
final HttpServletResponse response) throws Exception {
PrintWriter writer = null;
writer = response.getWriter();
String json = request.getParameter("data");
// do stuff with json then send a response
response.setContentType("application/json");
writer.write(A_JSON_STRING);
writer.flush();
writer.close();
// struts should return an action forward but as it's an ajax call,
// there's no need to
return null;
}
わかりやすくするために、try / catch / finalをスキップしていますが、コードに含まれています。
編集2: Firefox 18(ベータ版)に切り替えることになりましたが、今はすべて問題ないようです...