2017-07-27 10 views
0

サーブレットにajaxリクエストを送信し、サーブレットがjsonオブジェクトを与えています。しかし、ajaxレスポンスでは、私はjosnレスポンスを受け取っていませんでした。私は応答を確認するためにアラートとログメソッドを置く成功メソッドに来る。しかし、私はアラート/ログを取得していない。サーブレットからjspへの応答をajax jsonレスポンスとして受け取る方法

JSPのAjaxリクエスト/レスポンス:

$(document).ready(function() { 
      $("#searchCntrBtn").click(function(event) { 
      event.preventDefault(); 
      $.ajax({ 
       type: 'GET', 
       dataType: "json", 
       url: '/<%=si.webContext%>/servlet/webAdmin.WebAdminGetCntrDetailsServlet', 
       success: function(data) 
       { 
        var json = JSON.parse(data); 

        console.log("success", json); 
        // $('#myModal').show(); 
        // $('#modalContent').show().html(data); 
       } 
      }); 
      }) 
     }) 

サーブレット: - ここで間違って行きましたが、応答はJSPでの成功関数に到達していないものを

response.setContentType("application/json"); 
      response.setCharacterEncoding("UTF-8"); 
      PrintWriter out = response.getWriter(); 
      String jsondata = new Gson().toJson(cntrs); 

     // out.write(json); 
      response.getWriter().write(jsondata); 

      out.print(jsondata); 
      System.out.println("JSON data---->"+jsondata); 
      out.flush(); 

わかりません。あなたたちはこれで私を助けてくれますか?前もって感謝します。

答えて

0
アヤックス success方法

var json = jQuery.parseJSON(data); 
console.log("success", json); 

とサーブレットの書き込みコードで

Gson gson = new Gson(); 
JsonElement element = gson.toJsonTree(<Object_to_be_passed>); 
out.write(element.toString()); 

内部

コードを使用して、あなたが渡した場合も、あなたは、サーブレット

に二つのパッケージcom.google.gson.Gsoncom.google.gson.JsonElementをインポートする必要がありますjsonのモデルクラスは、ajaxでデータにアクセスするために変数名を使用します

0あなたがモデルクラスに Address持つフィールド namephone を持っている場合は、AJAXでコードを書く必要があるような

json.name & json.phone


index.jspを

<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <script src="jquery-3.2.1.js"></script> 
     <title>Ajax Sample</title> 
    </head> 
    <body> 
     <div> 
      <textarea id="text"></textarea> 
      <button onclick="load()">Load Now</button> 
     </div> 
     <script> 
      function load() { 
       $.ajax({ 
        url: "GetData", 
        type: 'POST', 
        success: function (data, textStatus, jqXHR) { 
         alert(data); 
         var json = jQuery.parseJSON(data); 
         document.getElementById("text").innerHTML = 'Name: ' + json.name + ' & Phone:' + json.phone; 
        } 
       }); 
      } 
     </script> 
    </body> 
</html> 
です

Index.javaサーブレット

import com.google.gson.Gson; 
import com.google.gson.JsonElement; 
import java.io.IOException; 
import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

/** 
* 
* @author Chirag 
*/ 
public class Index extends HttpServlet { 

    protected void processRequest(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     response.setContentType("text/html;charset=UTF-8"); 
     try (PrintWriter writer = response.getWriter()) { 
      Gson gson = new Gson(); 
      JsonElement element = gson.toJsonTree(new Address("Chirag", "123456")); 
      writer.write(element.toString()); 
     } 
    } 

    class Address { 

     private final String name; 
     private final String phone; 

     public Address(String name, String phone) { 
      this.name = name; 
      this.phone = phone; 
     } 

     public String getName() { 
      return name; 
     } 

     public String getPhone() { 
      return phone; 
     } 

    } 

    @Override 
    protected void doGet(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
      throws ServletException, IOException { 
     processRequest(request, response); 
    } 

    @Override 
    public String getServletInfo() { 
     return "Get Ajax Result"; 
    } 

} 

私は、サーブレットアドレスのGetDataを作成するために配備記述子を使用していました。

<servlet> 
    <servlet-name>Index</servlet-name> 
    <servlet-class>Index</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Index</servlet-name> 
    <url-pattern>/GetData</url-pattern> 
</servlet-mapping> 

このコードの場所も、HTMLのテキストエリアに値およびJSPにサーブレットから渡されたデータの警告を作るのweb.xml

のスニップの一部で、次の 。

希望するもの:

+0

データ型:ajaxの "json"が問題を作成します。 – Chirag

0

問題の発生箇所を確認してください。 ajaxコールがサーブレットに到達していますか?サーブレットクラスにSystem.out.println文があるかどうかを確認するステートメントを与えます。

これが起こっていて応答が戻ってこない場合は、応答が正しい形式で行われていないことを意味します。それが問題なのであれば、@chiragの回答に記載されているGSONを使用してください。

関連する問題