2013-10-15 3 views
0

Мне нужно автозаполнять форму на странице JSP в зависимости от размытия поля codigo_caso. Я передаю простой json-подобный String другому JSP, который извлекает данные, необходимые для заполнения формы.извлекать json из jsp и читать данные в ajax

Я протестировал страницу, и она вызывает второй JSP, который берет правильные данные из БД и создает с ним JSONObject.

Проблема заключается в том, что, похоже, она не возвращает JSON на первую страницу JSP, а код внутри функции успеха не выполняется. [Мне нужно, чтобы она работала в JSP, не сервлет, если это возможно]

Вот сценарий - первый JSP

<script type="text/javascript"> 
    $("#codigo_caso").blur(function() { 
    var cod = $(this).val(); 
    var dataString1 = {"codigo": cod}; 
    $.ajax({ 
     type: "GET", 
     url: "otros/codigoCasoDependienteNuevaTarea.jsp", 
     datatype: "json", 
     contentType: "application/json; charset=utf-8", 
     data: dataString1, 
     cache: false, 
     success: function(response) { 
     alert (response); 
     var jsontest = eval(response); 
     $(".linea_equipo").val(jsontest("linea_equipo")); 
     $("#selectArea").filter(function() { 
      return $(this).jsontest("id_area") === jsontest("area"); 
     }).prop('selected', true); 
     //("#selectArea").val(area); 
     $(".listaCentros").jsontest("nombre_centro"); 
     $("#listaRolNuevaTarea").filter(function() { 
      return $(this).jsontest("id_rol") === jsontest("rol"); 
     }).prop('selected', true); 
     //("#listaRolNuevaTarea").val(rol); 
     } 
    }); 
    }); 

Вот СПЯ извлечения данных из БД [intented в вернуть JSON]

<%@page import="java.sql.*"%> 
<%@page import="clases.*"%> 
<%@page import="org.json.simple.*"%> 
<%@page contentType="text/html" pageEncoding="UTF-8"%> 
<html> 
<% 
String data1 = "", linea = "", centro = "", error = "No existe el caso indicado", cadenaOut = ""; 
int area, rol; 
Connection conex = (Connection) session.getAttribute("conexion"); 
Statement st = conex.createStatement(); 
String sql = ""; 
String cod = request.getParameter("codigo").toString(); 
JSONObject j = new JSONObject(); 
if (cod != null && !cod.isEmpty() && !cod.equals("0")) { 
    sql = "SELECT t1.linea_equipo,t1.id_rol, t2.id_area,t2.nombre_centro " 
      + " FROM gen_casos_prisma t1 LEFT OUTER JOIN gen_centros t2 ON " 
      + " t1.id_centro = t2.id_centro " 
      + " WHERE " 
      + " t1.CODIGO_CASO = " + cod; 
    ResultSet rs = st.executeQuery(sql); 
    rs.beforeFirst(); 
    if (rs.next()) { 
     linea = rs.getString("linea_equipo"); 
     area = rs.getInt("id_area"); 
     centro = rs.getString("nombre_centro"); 
     rol = rs.getInt("id_rol"); 
     j.put("linea_equipo", linea); 
     j.put("id_area", area+""); 
     j.put("nombre_centro", centro); 
     j.put("id_rol", rol+""); 
     System.out.println(j.toString()); 
    } else { 
     /* return variable error */ 
    } 
} 
response.setContentType("application/json"); 
response.getWriter().print(j); 
out.flush(); 
//out.print(j.toJSONString()); 
%> 
</html> 

Когда код печатает JSON, [второй JSP, почти в конце] он показывает мне что-то вроде этого:

  • { "id_area": ​​"268435465", "linea_equipo": "МОДУЛЬНАЯ ххх", "nombre_centro": "Центр ххх", "id_rol": "2"}

ответ

0

Если вы хотите Код JavaScript для получения только JSON, удалить

</html> 

метки на

<html> 

и

из JSP поэтому он будет возвращать только JSON.

Очевидно, так как вы назвали

response.setContentType("application/json"); 

это не имеет смысла использовать HTML-теги в выходных данных.

+0

спасибо. Это сработало. Я должен был сделать другие исправления в моем js-коде, чтобы правильно заполнить всю форму, но основная проблема была решена. – bateras

Смежные вопросы