【问题标题】:No data returned from $.getJSON() (JSP, Servlet, jQuery Ajax)$.getJSON() 没有返回数据(JSP、Servlet、jQuery Ajax)
【发布时间】:2017-02-28 14:17:09
【问题描述】:

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

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

主要问题是,当我点击选项卡和文本框的 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 没有被调用的原因是什么?谁能发现它?还是我做错了?而且这种方式是好的做法还是我应该遵循其他方法?

编辑

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

【问题讨论】:

  • 您是否尝试使用类似 www.yourreserver.xxx/AjaxController 的方式调用 servlet。这管用吗。如果是,请尝试将您的脚本更改为 $.getJSON('www.youreserver.xxx/AjaxController?text='+$("#inText").val()...
  • 实际上我在本地 Tomcat 上运行它。我尝试使用在 web.xml 中配置的 Servlet 名称,如上所示`$.getJSON('AjaxController?text='+$("#inText").val(),` 但现在我也尝试使用完全限定名称@987654324 @ 但是没有运气。另请参阅我已编辑原始问题以包含调试时间快照。
  • 你试过直接在浏览器中运行servlet吗(不是在javascript中通过ajax请求)???
  • 当我尝试在 Eclipse 中调试 servlet 时,它以调试模式启动,因此至少 eclipse 正在识别 Servlet 的存在。所以我在其中放了一个虚拟代码,只是为了返回一个虚拟 Json,当我尝试通过浏览器直接调用 Servlet 时,它生成了一个值为 {"value":"text"} 的文件。所以我认为 Servlet 工作正常。
  • 1.doTransact() 真的被执行了(把警报放进去)。 2. 尝试将 $.getJson 重写为 $.ajax 3. jQuery 真的有效吗?

标签: jquery ajax jsp servlets getjson


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多