从jsp中检索json并读取ajax中的数据

时间:2013-10-15 09:49:05

标签: jquery ajax json jsp

我需要在JSP页面中自动填充表单,具体取决于字段 codigo_caso 的模糊。 我将一个简单的类似json的String传递给另一个JSP,它正在检索完成表单所需的数据。

我测试了页面,它调用了第二个JSP,它从数据库获取正确的数据并用它构建一个JSONObject。

问题是它似乎没有将JSON返回到第一个JSP页面,并且成功函数内的代码没有执行。 [我需要让它在jsp中工作,而不是servlet,如果可能的话]

这是脚本 - 第一个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);
      }
    });
  });

这是JSP从DB中检索数据[有意返回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”:“MODULAR xxx”,“nombre_centro”:“center xxx”,“id_rol”:“2”}

1 个答案:

答案 0 :(得分:0)

如果您希望javascript仅接收json,请删除

<html> 

</html> 
来自JSP的

标签,因此它只返回json。

显然,自从你打电话

 response.setContentType("application/json"); 

在输出中使用html标签没有意​​义。