1

私は、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(ベータ版)に切り替えることになりましたが、今はすべて問題ないようです...

4

0 に答える 0