没有从$ .getJSON()返回的数据(JSP,Servlet,jQuery Ajax)

时间:2013-02-05 07:12:43

标签: jquery ajax jsp servlets getjson

我正在尝试使用JSP,Servlet和JDBC学习jQuery Ajax。

所有人都在尝试: 我在JSP中有两个文本框。 当我在第一个输入内容并点击Tab时,在其模糊事件中,我对一个servlet进行getJson()调用,而servlet又调用一个JDBC处理程序(我已独立测试并且工作正常,因此不包含在此处)。在servlet中,我正在设置内容类型,使用Gson库将从JDBC检索到的数据转换为Json并返回它。

主要的问题是当我点击tab并且文本框的onblur事件调用它执行getJson但是servlet没有被执行,因为在eclipse中我将println()放在Servlet中。它不会在eclipse控制台上打印任何内容。它是否应该在控制台上放置任何东西(因为它是从JS调用的)?因为没有从Servlet返回数据,getJson中的回调成功函数也没有被执行(我在IE F12工具中确认了它,也通过在其中放置警报)。

我的JSP

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01          
 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>  
<head>      
    <script type="text/javascript" src="scripts/jquery-1.9.0.min.js"></script>

    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    <script>
        function doTransact()
        {
            $.getJSON('AjaxController?text='+$("#inText").val(),
                        function(data)
                        {   
                                //alerting to check whether callback function is in 
                                //fact getting called or not
                            alert(data.text);
                                $("#outText").valdata.text);
                            }
                    );
        }
    </script>
</head>
<body>
    Type here:<input onblur="doTransact();" type="text" id="inText"></input>
    <br />
    Get here:<input type="text" id="outText"></input>
</body>
</html>

为响应getJSON请求,我在AjaxController servlet之后编写并添加了:

package com.exp.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.exp.dao.AjaxDAO;
import com.google.gson.Gson;

public class AjaxController extends HttpServlet 
{   
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException 
    {
        System.out.println("done");
        response.setContentType("application/json");

        AjaxDAO adao = new AjaxDAO();

        String text = adao.setGetText(request.getParameter("text"));

        //printing on console to check whether Servlet is in fact gettiing called or not
        System.out.println("In Ajax Controller");

        if(text!=null)
        {
            PrintWriter out = response.getWriter();

            String convertedJson = new Gson().toJson(text);
            out.println(convertedJson);
        }

    }

}

我已经正确配置了web.xml,这可能是AjaxController没有被调用的原因?谁能发现它?或者我是以错误的方式做到的?这也是一种很好的做法,或者我应该采用其他方法吗?

修改

这是调试时间视图的样子:

enter image description here

1 个答案:

答案 0 :(得分:0)

我无法发表评论,这就是我将其作为答案发布的原因。 我检查了相同的代码,并进行了一些修正和工作。在servlet中添加以下代码后尝试。

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        doPost(request, response);
    }