getJSON没有返回值

时间:2012-05-30 03:59:16

标签: javascript return-value getjson

运行此操作时,不会触发“成功”警报。我用firebug检查过,它告诉我ret是未定义的。这是什么意思?

function checkUni() {

var URL = "http://localhost:8080/GradSchoolApp/test.jsp";

var ret = $.getJSON(URL, function(data, textStatus) {
    alert("success");
});
}

编辑:

这是test.jsp btw

<%@ 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>

3 个答案:

答案 0 :(得分:1)

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

编辑:

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

JSP:

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

Java Servlet:

response.setContentType("application/json");

答案 1 :(得分:0)

ret的范围是您的函数,因此只有函数内的代码才能访问它。我的猜测是您没有在本地计算机的端口8080上运行Web服务器,或者URL由于其他原因而无效。如果您想要对错误进行回调(fiddle),请尝试.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 page警告它将在inavlid json上静默失败,包括严格的要求,如引用的属性名称,您可以尝试使用.get并反序列化自己。

答案 2 :(得分:0)

首先检查“.jsp”文件是否返回json数据

再使用一个参数进行回调

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");
    });
}