0

当我运行它时,不会触发带有“成功”的警报。我检查了萤火虫,它告诉我 ret 是未定义的。这意味着什么?

function checkUni() {

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

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

编辑:

这是 test.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>
4

3 回答 3

1

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

编辑:

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

JSP:

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

Java 小服务程序:

response.setContentType("application/json");
于 2012-05-30T04:03:36.723 回答
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");
    });
}
于 2012-05-30T04:10:07.637 回答
0

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自己使用和反序列化。

于 2012-05-30T04:02:04.970 回答