Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ajax调用中返回空json_Java_Jquery_Ajax_Json_Servlets - Fatal编程技术网

Java Ajax调用中返回空json

Java Ajax调用中返回空json,java,jquery,ajax,json,servlets,Java,Jquery,Ajax,Json,Servlets,我尝试使用ajax调用检索数据,该调用使用servlet并传回JSON对象。AJAX正在成功完成,但servlet返回的JSON对象为空。但是当我在servlet中打印JSON对象时,它正在打印数据,并且生成的JSON对象似乎是有效的 {"orderObj":[{"FIRST_NAME":"John","LAST_NAME":"Mkay"}]} HTML <!doctype html> <html lang="en"> <head> <meta cha

我尝试使用ajax调用检索数据,该调用使用servlet并传回JSON对象。AJAX正在成功完成,但servlet返回的JSON对象为空。但是当我在servlet中打印JSON对象时,它正在打印数据,并且生成的JSON对象似乎是有效的

{"orderObj":[{"FIRST_NAME":"John","LAST_NAME":"Mkay"}]}
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Dialog - Modal form</title>
<link rel="stylesheet"
    href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"
    type="text/javascript"></script>
<link rel="stylesheet" href="/resources/demos/style.css">
<style>
body {
    font-size: 62.5%;
}

h1 {
    font-size: 1.2em;
    margin: .6em 0;
}

div#orders-contain {
    width: 450px;
    margin: 30px 0;
}

div#orders-contain table {
    margin: 1em 0;
    border-collapse: collapse;
    width: 150%;
}

div#orders-contain table td, div#orders-contain table th {
    border: 1px solid #eee;
    padding: .6em 10px;
    text-align: left;
}
}
</style>
<script>
    $(document).ready(function() {
        $("#query-order").click(function(e) {
            dataString = "countryCode=";
            alert("on Load");
             $.ajax({
                    type: "POST",
                    url: "QueryOrder",
                    data: dataString,
                    dataType: "json",
                    success: function(
                        data) {
                        alert("I am in Success");
                        alert(data);
                    },
                    error: function(jqXHR,
                        textStatus,
                        errorThrown) {
                        alert("Error Return from Ajax");
                        alert(jqXHR
                            .getResponseHeader('Content-Type'));
                        alert(jqXHR.responseText);
                        alert(jqXHR);
                        alert(errorThrown);
                        alert(textStatus);
                    }
                }); //end of Ajax call
        }); // end of click function
    });
</script>
</head>
<body>
    <div id="orders-contain" class="ui-widget">
        <h1>Orders:</h1>
        <table id="Orders" class="ui-widget ui-widget-content">
            <thead>
                <tr class="ui-widget-header ">
                    <th>Order Number</th>
                    <th>Customer Number</th>
                    <th>First Name</th>
                    <th>Last Name</th>
                    <th>Date of Order</th>
                    <th>Address</th>
                    <th>Order Total</th>
                </tr>
            </thead>
            <tbody>
                <tr>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                    <td></td>
                </tr>
            </tbody>
        </table>
    </div>
    <button id="query-order">Query Orders</button>
</body>
</html>

jQueryUI对话框-模态表单
身体{
字体大小:62.5%;
}
h1{
字体大小:1.2米;
边缘:.6em0;
}
div#订单包含{
宽度:450px;
利润率:30px0;
}
div#订单包含表格{
利润率:1米0;
边界塌陷:塌陷;
宽度:150%;
}
div#orders包含表td,div#orders包含表th{
边框:1px实心#eee;
填充:.6em10px;
文本对齐:左对齐;
}
}
$(文档).ready(函数(){
$(“#查询顺序”)。单击(函数(e){
dataString=“countryCode=”;
警报(“装载”);
$.ajax({
类型:“POST”,
网址:“查询者”,
数据:dataString,
数据类型:“json”,
成功:功能(
(数据){
警惕(“我成功了”);
警报(数据);
},
错误:函数(jqXHR,
文本状态,
错误(抛出){
警报(“来自Ajax的错误返回”);
警报(jqXHR)
.getResponseHeader(“内容类型”);
警报(jqXHR.responseText);
警报(jqXHR);
警报(错误抛出);
警报(文本状态);
}
});//Ajax调用结束
});//单击结束函数
});
订单:
订单号
客户编号
名字
姓
订购日期
地址
订单总数
查询订单
Servlet

package com.order.pkg;

import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.google.gson.*;

public class QueryOrder extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public QueryOrder() {
        super();
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
     *      response)
     */
    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
           doPost(request,response);
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
     *      response)
     */ 
    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("application/json");        

        response.setHeader("Cache-control", "no-cache, no-store");
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Expires", "-1");

        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST");
        response.setHeader("Access-Control-Allow-Headers", "Content-Type");
        response.setHeader("Access-Control-Max-Age", "86400"); 
        try {
            Class.forName("oracle.jdbc.OracleDriver");
            System.out.println("Driver loaded");

            String url = "jdbc:oracle:thin:@localhost:1521:xe";
            String user = "dbtest";
            String pwd = "dbtest";
            Connection DB_mobile_conn = DriverManager.getConnection(url, user,
                    pwd);
            System.out.println("Database Connect ok");

            String query = "select * from ORDER_HEADERS";

            ArrayList<Order> orderList = new ArrayList<Order>();


            if (query != null) {
                Statement query_stmt = DB_mobile_conn.createStatement();
                ResultSet query_rs = query_stmt.executeQuery(query);
                while (query_rs.next()) {
                    Order orderobj = new Order();
                    orderobj.setFIRST_NAME(query_rs.getString("FIRST_NAME").trim());
                    orderobj.setLAST_NAME(query_rs.getString("LAST_NAME").trim());
                    orderList.add(orderobj);
                }
                query_rs.close();
                query_stmt.close();
            }

            Gson gson = new Gson();
            JsonObject myObj = new JsonObject();
            JsonElement orderObj = gson.toJsonTree(orderList);
            myObj.add("orderObj", orderObj);
            System.out.println(myObj);      

            System.out.println(response.getContentType());              

        } catch (Exception exp) {
            System.out.println("Exception = " + exp);
        }
    }
}
package com.order.pkg;
导入java.io.IOException;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.Statement;
导入java.util.ArrayList;
导入javax.servlet.ServletException;
导入javax.servlet.http.HttpServlet;
导入javax.servlet.http.HttpServletRequest;
导入javax.servlet.http.HttpServletResponse;
导入com.google.gson.*;
公共类QueryOrder扩展了HttpServlet{
私有静态最终长serialVersionUID=1L;
/**
*@参见HttpServlet#HttpServlet()
*/
公共查询者(){
超级();
//TODO自动生成的构造函数存根
}
/**
*@参见HttpServlet#doGet(HttpServletRequest请求,HttpServletResponse
*(答复)
*/
受保护的无效数据集(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
doPost(请求、响应);
}
/**
*@参见HttpServlet#doPost(HttpServletRequest,HttpServletResponse
*(答复)
*/ 
受保护的void doPost(HttpServletRequest请求,
HttpServletResponse响应)引发ServletException,IOException{
setContentType(“应用程序/json”);
setHeader(“缓存控制”,“无缓存,无存储”);
setHeader(“Pragma”,“无缓存”);
setHeader(“Expires”、“-1”);
response.setHeader(“访问控制允许原点“,“*”);
setHeader(“访问控制允许方法”、“POST”);
setHeader(“访问控制允许头”,“内容类型”);
setHeader(“访问控制最大年龄”,“86400”);
试一试{
类forName(“oracle.jdbc.OracleDriver”);
System.out.println(“驱动程序加载”);
String url=“jdbc:oracle:thin:@localhost:1521:xe”;
字符串user=“dbtest”;
字符串pwd=“dbtest”;
Connection DB_mobile_conn=DriverManager.getConnection(url、用户、,
pwd);
System.out.println(“数据库连接正常”);
String query=“从订单头中选择*”;
ArrayList orderList=新建ArrayList();
if(查询!=null){
语句查询\u stmt=DB\u mobile\u conn.createStatement();
ResultSet query\u rs=query stmt.executeQuery(查询);
while(查询\u rs.next()){
Order orderobj=新订单();
orderobj.setFIRST_NAME(query_rs.getString(“FIRST_NAME”).trim());
orderobj.setLAST_NAME(query_rs.getString(“LAST_NAME”).trim());
orderList.add(orderobj);
}
查询_rs.close();
查询_stmt.close();
}
Gson Gson=新的Gson();
JsonObject myObj=新的JsonObject();
JsonElement orderObj=gson.toJsonTree(orderList);
添加(“orderObj”,orderObj);
系统输出打印LN(myObj);
System.out.println(response.getContentType());
}捕获(异常扩展){
System.out.println(“Exception=“+exp”);
}
}
}
请帮助我理解返回空JSON的原因。感谢您的帮助

这可能会对您有所帮助

PrintWriter out = response.getWriter();
out.print(myObj);

不要使用System.out.println(),它将在控制台上打印。它不会发送响应。要发送响应,您需要使用PrintWriter。

您从未将myObj对象写入响应。 您必须使用:

response.getWriter().write(myObj.toString());
C