没有来自 getJSON 的返回值

No return value from getJSON

本文关键字:返回值 getJSON      更新时间:2023-09-26

当我运行它时,不会触发带有"成功"的警报。我用火虫检查过,它告诉我 ret 是未定义的。那是什么意思?

function checkUni() {
var URL = "http://localhost:8080/GradSchoolApp/test.jsp";
var ret = $.getJSON(URL, function(data, textStatus) {
    alert("success");
});
}

编辑:

这是测试.jsp顺便说一句

<%@ page language="java" contentType="application/json; charset=ISO-8859-1"
pageEncoding="ISO-8859-1" import="java.util.*, net.sf.json.JSONObject"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%
response.setContentType("application/json");
JSONObject jo = new JSONObject();
jo.put("location", "1");
jo.put("name", "someUni");
out.println(jo);
out.flush();
%>
</body>
</html>

AJAX 调用不起作用。要检查的几点,URL是否正确?您是否检查了应用程序服务器日志以查看调用是否已到达。如果 AJAX 调用成功,你能检查 HTTP 代码的 firebug 吗?

编辑:

(从 text/json 更改为 application/json)谢谢 Bergi

.JSP:

<%@ page contentType="application/json" %>

Java Servlet:

response.setContentType("application/json");

首先检查是否返回 json 数据的".jsp"文件

再使用一个参数进行回调

getJSON: function( url, data, callback ) {
    return jQuery.get( url, data, callback, "json" );
}

像这样的用户

function checkUni() {
    var URL = "http://localhost:8080/GradSchoolApp/test.jsp";
    var ret = $.getJSON(URL,"",function(data){
        alert("success");
    });
}

ret的作用域为函数,因此只有函数中的代码才能访问它。 我的猜测是,您没有在本地计算机的端口 8080 上运行 Web 服务器,或者 URL 由于其他原因无效。 如果您还想获得错误的回调,请尝试.ajax(小提琴):

function checkUni() {
    var URL = "http://localhost:8080/GradSchoolApp/test.jsp";
    var ret = $.ajax(
    {
        url: URL,
        success: function(data, textStatus) {
            alert('success!');
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert('Error "' + textStatus + '": ' + errorThrown);
        }
    });
}

您可能还想检查您的 json,getJson 页面警告它会在 inavlid json 上静默失败,包括引用属性名称等严格要求,您可以尝试只使用 .get 和反序列化自己。