0

サーブレットへのajax呼び出しでシリアル化可能なデータを送信する次のコードがあります

$.ajax({ 
    type: "post",
    url: registersubmit.RegisterServlet.json,
    dataType: "json",   
    data:$('#registrationForm').serialize(),          
    success: function(msg) {  
               //   alert(msg.data);
               alert('success'+msg.message2);     
    },
    error: function (xhr, ajaxOptions, thrownError){
             alert('HAI');
             alert('BYE');
    }  
}); 

ID registrationForm のフォームがあり、ステートメント data:$('#registrationForm').serialize() を使用してシリアル化可能なデータを送信しようとすると、「サーブレットがステータス コード 302 で一時的に移動しました」という応答が返されます。

注: ステートメント data:$('#registrationForm').serialize() を削除すると、ステータス コード 200 で通常の ajax 応答が返されます。

ajax 呼び出しでシリアル化可能なデータを送信する方法を教えてください。

ありがとう、バラジ。

4

1 に答える 1

2

302 は、サーブレットが を呼び出したことを意味しますresponse.sendRedirect(newURL)。おそらく、サーブレットはリクエストを正常に処理したため、何らかの理由でそれを行っているのでしょうか?

でリダイレクトされた応答を取得する場合$.ajax()、ブラウザはメイン ウィンドウを自動的に変更しません。実際にメイン ウィンドウを特定の URL に変更する必要がある場合は、目的のターゲット URL を含む特定の応答をサーブレットに返させてから、応答から抽出された場所を使用して JavaScript にリダイレクトを実行させる必要がwindow.location=newURLあります。newURL

ところで、「シリアル化可能なデータ」という用語は、コンテキスト内で非常に誤解されているように聞こえます。は、フォームの$.serialize()すべての入力値を JSON オブジェクトに収集して、 のリクエスト パラメータとして送信できるようにするだけです$.ajax。Java コンテキストでは、「シリアライズ可能なデータ」はまったく異なる意味を持ちます。

于 2012-10-21T14:07:13.503 に答える