2012-02-03 7 views
0

jqueryとjspを使用してajax呼び出しを試みていますが、動作させることはできません。Ajaxリクエストがサーブレットに到達しません

<%@page import="in.isuru.twitter.Twits" %> 
<%@page import="java.util.ArrayList" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
    <head> 
     <title>Twitter Sinhala</title> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script> 
     <script src="script.js" type="text/javascript"></script> 
    </head> 
    <body> 
     <form id="form" action="twitterv2" method="post"> 
      Enter Something 
      <input id="term" type="text" name="term" /> 
      <input id="submit" type="submit" value="Show results" name="submit"/> 
     </form> 
     <p id="result"></p> 
    </body> 
</html> 

これはサーブレットです。

package in.isuru.twitter; 

import java.io.IOException; 
import java.util.ArrayList; 

import javax.servlet.http.*; 

import twitter4j.Query; 
import twitter4j.QueryResult; 
import twitter4j.Tweet; 
import twitter4j.Twitter; 
import twitter4j.TwitterException; 
import twitter4j.TwitterFactory; 

@SuppressWarnings("serial") 
public class TwitterV2Servlet extends HttpServlet { 

    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { 
     resp.setContentType("text/html"); 
     //Twits tweets = new Twits(); 
     Twitter twitter = new TwitterFactory().getInstance(); 
     //twitter.setOAuthConsumer(CONSUMER_KEY, CONSUMER_SECRET); 
     Query query = new Query("man"); 
     QueryResult result = null; 
     try { 
      result = twitter.search(query); 
     } catch (TwitterException e) { 
      e.printStackTrace(); 
     } 
     for (Tweet tweet : result.getTweets()) { 
      resp.getWriter().println(tweet.getFromUser() + ":" + tweet.getText() + " <br/>"); 
     } 
    } 

} 

これは

$(document).ready(function() { 
    $('#form').submit(function() { 
     var number = $('#term').val(); 

     $.ajax({ 
      type:  "post", 
      url:  "twitterv2", 
      data:  "term=" + term, 
      success: function(msg) { 
       $('#result').hide(); 
       $("#result").html("<h3>" + msg + "</h3>").fadeIn("slow"); 
      } 
     }); 

     return false; 
    }); 
}); 

script.jsこれは、私はそれを動作させることができないのweb.xml

<?xml version="1.0" encoding="utf-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 
    <servlet> 
     <servlet-name>TwitterV2</servlet-name> 
     <servlet-class>in.isuru.twitter.TwitterV2Servlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>TwitterV2</servlet-name> 
     <url-pattern>/twitterv2</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
</web-app> 

です。私がサーブレットのページに行って、 http://localhost:8888/twitterv2?term=peopleのような議論をすると、Twitterの投稿が表示されます。サーブレットにエラーはないので、問題はscript.jsにあると思います。しかし、私はエラーを見つけることができません。

+0

[firebug](http://getfirebug.com)またはChromeの開発ツールを使用してレスポンスを検査し、エラーの原因を確認しましたか? – ggreiner

+0

このようなツールは使用されていません。私は緩みのように感じる、これらのタイプの問題は単純なものではないのですか? – Isuru

答えて

0
  1. 入力タイプをボタンに変更します。
  2. ボタンをクリックして関数を作成して呼び出します。
    <input id="submit" type="button" value="Show results" onclick="submitForm()" name="submit"/> 
    

    して、関数を作成

...

<script> 
    function submitForm(){ 
     $.ajax({ 
      type:  "post", 
      url:  "twitterv2", 
      data:  "term=" + term, 
      success: function(msg) { 

       $('#result').hide(); 

       $("#result").html("<h3>" + msg + "</h3>") 
       .fadeIn("slow"); 
      } 
     }); 
    } 
</script> 
3

あなたはしかし、あなたのサーブレットのみGET要求を受け付けている、AJAXによってPOSTリクエストを送っています。 FirebugやChromeに内蔵されているブラウザ開発ツール(F12キーを押してください)を使用すると、ajaxリクエストがHTTP 405 メソッドが許可されていないことがわかりました。あなたの頭の球根。

問題を解決するには、サーブレットのdoGet()メソッドをdoPost()に変更するか、代わりにGETリクエストをAjaxに送信してください。

あなたのスクリプトとサーブレットのコードは一般的にうまくいきます。私はではありません。は他の回答者の示唆どおりに書き直すことをお勧めします。エンドユーザーがJavaScriptを無効にした場合、フォームは完全には機能しなくなります。

関連する問題