2016-07-28 62 views
-3

返回地圖數據這是我的Ajax請求如何從Ajax請求

var id = $(this).attr('data-id'); 

$.ajax({ 
    type: 'POST', 
    url: '../include/residents.jsp', 
    dataType: "json", 
    data: { 
     id: id, 
    }, 
    success: function(data) {}, 
    error: function(data) {} 
}).done(function() { 
}); 

這是一種內部residents.jsp

<%@ page import="java.io.*,java.util.*, javax.servlet.*,java.text.*" %> 
<%@ page import="javax.swing.*" %> 
<%@page import="java.text.DateFormat"%> 
<%@page import="java.text.SimpleDateFormat"%> 
<%@page import="java.sql.PreparedStatement"%> 
<%@ page language="java"%> 
<%@page import="java.sql.ResultSet"%> 
<%@page import="java.sql.Statement"%> 
<%@ include file="dbconfig.jsp" %> 

<% 
    String id = request.getParameter("id"); 


    try { 

     conn.setAutoCommit(false); 
     PreparedStatement preparedStatement = null; 
     Map map = new HashMap(); 
     String add_supplemental = "SELECT * FROM residence_tb WHERE ri_id = ?"; 

      preparedStatement = conn.prepareStatement(add_supplemental); 
      preparedStatement.setString(1,id); 
      out.println("before"); 
      ResultSet rs = preparedStatement.executeQuery(); 
      while (rs.next()) { 
        String lname = rs.getString("ri_lname"); 
        String fname = rs.getString("ri_fname"); 
        String mname = rs.getString("ri_mname"); 
        String suffix = rs.getString("ri_suffix"); 
        String bdate = rs.getString("ri_bdate"); 
        String age = rs.getString("ri_age");  
        String gender = rs.getString("ri_gender"); 
        String status = rs.getString("ri_status"); 
        String mobileno = rs.getString("ri_mobileno"); 
        String telephoneno = rs.getString("ri_telephoneno");  
        String province = rs.getString("ri_province"); 
        String municipality = rs.getString("ri_municipality"); 
        String brgy = rs.getString("ri_brgy"); 
        String street = rs.getString("ri_street"); 


        map.put("lname", lname); 
        map.put("fname", fname); 


      } 

      out.println(map); 
//  rst.close(); 
//  stmt.close(); 

     conn.commit(); 
     conn.close(); 

    } catch(Exception e) { 
     e.getMessage(); 
     e.printStackTrace(); 
    } 
%> 

它好看已經當我有out.println(map);我得到

{fname=Juan, lname=Dela Cruz} 

在響應中。當我試圖return map我得到

不兼容的類型:意外的返回值

我怎樣才能返回map這樣我就可以成功使用它,或者在阿賈克斯

+0

哪裏有你.. – nicael

+0

複製這個我只是增加了我在計算器搜索它們合併成一個項目?即時通訊只是試圖讓我的工作 –

+0

你從這個複製的問題是什麼? – nicael

回答

0

完成功能請從響應中返回一個JSON字符串。 JSON是瀏覽器中的地圖。

Map<String, Object> jsonMap = new HashMap<String, Object>(); 
jsonMap.put("Status", "Success"); 
jsonMap.put("Rows", 100); 
ObjectMapper mapper = new ObjectMapper(); 
mapper.getFactory().configure(JsonGenerator.Feature.ESCAPE_NON_ASCII, true);   
String jsonStr = mapper.writeValueAsString(jsonMap); 
response.getOutputStream().print(jsonStr); 

ObjectMapper是Jackson/fastxml的一個類。這段代碼會將JSON返回給瀏覽器。

response.getOutputStream().print("{\"result\":[{ \"lname\": \"Smith\", \"fname\": \"John\"}, { \"lname\": \"Smith1\", \"fname\": \"John1\" }, { \"lname\": \"Smith2\", \"fname\": \"John2\" }]}"); 

在瀏覽器:

var res = JSON.parse(request.responseText) 
console.log(res.result); 
+0

我需要導入什麼使用'ObjectMapper'和'JsonGenerator' o得到錯誤 –

+0

您需要下載fastxml 2.5.x.如果返回值不復雜。您可以手動編寫JSON格式。 (){「Status \」:\「Success \」}「); – Birdflying1005

+0

例如我只想'[{ \t 「L-NAME」: 「史密斯」, \t 「FNAME」: 「約翰」, },{ \t 「L-NAME」: 「Smith1」, \t 「FNAME」:「 John1「, },{ \t」lname「:」Smith2「, \t」fname「:」John2「, }]'你能展示一個樣本嗎?我只想將這種數據返回到ajax,所有這些都來自我編寫的select語句 –