0

私は次のようにHTMLからサーブレットにデータを送信しています:

<form Action="http://caregap2.appspot.com/src.main.java.org.deri.hcls.caregap2.client" Method="GET">
Username: <input type="text" name="username" size="20" value="@gmail">
<BR>
<input type="submit" VALUE="submit">
<input type="reset" value="reset">
</form>

これにより、変数Usernameがサーブレットに送信されます。ただし、[送信]をクリックしてデータを送信する必要はありません。データを投稿して、何もクリックせずにサーブレットをロードしたいと思います。私はこれを試しました:

$(document).ready(function() {
var username = "matthewgortnalon@gmail.com";
$.ajax({
      type: "POST",
      url: "http://caregap2.appspot.com/src.main.java.org.deri.hcls.caregap2.client",
      data: { username: "username" }
    }).done(function( msg ) {
     // alert( "Data Saved: " + username );
      window.location = "http://caregap2.appspot.com/src.main.java.org.deri.hcls.caregap2.client?q=" + username;
    });
});

しかし、それは機能しません、誰かが私が間違っていることを見ることができますか?または、別の方法を使用する必要がある場合はどうなりますか?助けていただければ幸いです!! :)

これが私のサーブレットメソッドです:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");{
        ServletOutputStream  out = response.getOutputStream();
        try {
            out.println("<html><head><title>" +  "</title></head>");
            out.println("<body><h1>" +  "</h1>");
            String  name = request.getParameter("username" );
            //String  comment = request.getParameter( "comment" );
            out.println("Name:" + name + "<BR>");
            //out.println("Comment: " + comment + "<BR>");
        }
        catch(Throwable  t ) {
            out.println("<P><pre>");
            t.printStackTrace( new PrintStream(out) );
            out.println ("</pre><P>");
        }
        out.println ("</body></html>");
    }
4

3 に答える 3

3

JSONデータが間違っています:

data: { "username": username }

値(変数)よりも最初にキー

于 2012-07-12T10:41:27.320 に答える
2

フォームがGETリクエストを使用していて、ajaxがPOSTリクエストを実行しているようです。サービスがパラメータを探している可能性がありGETます。GET代わりに使用するようにajaxリクエストを変更しますPOST

于 2012-07-12T10:24:08.653 に答える
2

わかりました、私はあなたが何をしようとしているのか知っていると思います。AJAXリクエストはあなたが望むものではありません。私の理解では、サーブレットをロードして、ページとまったく対話することなくサーブレットを表示しようとしています。

あなたがする必要があるのはjavascriptで次のことをすることです

var username = "you username here";
window.location = "http://caregap2.appspot.com/src.main.java.org.deri.hcls.caregap2.client?username=" + username;

ajaxリクエストを使用すると、サーブレット本体がdoneメソッドに戻ります。これは、リロードせずに現在のページに情報を表示する場合に役立ちます。

現在行っているのは、サーブレットの応答本文をクエリの最後に追加して、間違った場所にリダイレクトすることです。

追加情報: Ajaxを使用する別の方法は、サーブレットがHTMLを返すようにすることですが、必ずしもページ全体を返す必要はありません。次に、この応答を使用して現在のページの一部にデータを入力します。

于 2012-07-12T10:55:05.247 に答える