2017-02-28 9 views
0

私はJSPにAJAX呼び出しを行いました。これは別のJavaクラスでJavaメソッドを呼び出します。すべてのファイルは同じフォルダにあります。JSP値をAJAX呼び出しに戻します。

何らかの理由で、AJAXに正しい値が返されません。これは単純にJSPコンテンツ全体を出力します。

はJavaScript:

var xhr = new XMLHttpRequest(); 

xhr.onload = function() { 
    if(true){ 
     alert('hello!'); 
     var response = xhr.responseText; 
     alert(response); 
     document.getElementById('newgame').innerHTML = xhr.responseText; 

    } 
}; 

xhr.open('GET', 'javaconnect.jsp', true); 
xhr.send(null); 

JSP:

<%@ page import="com.example.Server"%> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<title>JSP Page</title> 
</head> 
<body> 

    <% 
    Server tc = new Server(); 
     out.print(tc.highScore()); 

    %> 


</body> 
</html> 

Javaクラス:

package com.example; 
    public class Server { 


    public String highScore() { 


     return "hello!!!"; 

    } 

} 

答えて

0

最善の解決策は、そのJSPの代わりに制御層を作るためにサーブレットを使用することです次のようにServerクラスをインスタンス化します。

public class HelloWorld extends HttpServlet { 

    protected void doGet (HttpServletRequest request, 
           HttpServletResponse response) 
       throws ServletException, IOException { 

     Server tc = new Server(); 
     String txt = tc.highScore(); 

     response.setContentType("text/plain"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(txt); 
    } 

} 

サーブレットをマップして、ajax呼び出しのURLを変更することを忘れないでください。 コールをテストすることができます

+0

私はこれをかなり新しくして以来、私はJSPの代わりにサーブレットを使用することをお勧めしますか? ajax呼び出しのURLは単純にサーブレットファイルの名前ではありませんか?ちょうど私がJSPでやったように。 –

+0

Webプロジェクトは、サーブレット3.0を使用している場合は簡単です: @WebServlet( "/私のサーブレット")// <--------マッピングサーブレット パブリッククラスに、MyServletはHttpServletを{ ... } 拡張しますurlはhttp:// localhost://my-servlet ですが、サーブレット2.5を使用する場合、web.xmlファイルにサーブレットをマッピングする必要があります。 https://docs.oracleの例です。 com/cd/E11035_01/wls100/webapp/configureservlet.html – emichels

関連する問題