运行此操作时,不会触发“成功”警报。我用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>
答案 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");
});
}