我正在尝试使用JSP技术从服务器获取一段数据。我正在使用JSON对象来执行此操作。在客户端,我使用XMLHttpRequest来获取数据。
为了检查它是否正常工作,我写了一段代码如下:
<head>
<script type="text/javascript">
function test(data) {
if(data){
var jsonObj= eval('(' + data + ')');
var Question= jsonObj.Question;
document.write(Question);
}
}
function handler() {
if(this.readyState == 4 && this.status == 200) {
// so far so good
if(this.responseText != null && this.responseText)
// success!
test(this.responseText);
else
test(null);
} else if (this.readyState == 4 && this.status != 200) {
// fetched the wrong page or network error...
test(null);
}
}
function xyz(){
var client = new XMLHttpRequest();
client.onreadystatechange = handler;
client.open("POST", "fetch.jsp", true);
client.send();
}
</script>
</head>
<body>
<h1>Hello World!</h1>
<br><br><input id="Q" type="button" onclick="xyz()" >
</body>
在服务器端,我做了如下:
<%@page import="net.sf.json.JSONObject"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>JSP Page</title>
</head>
<body>
<% JSONObject jsonObj= new JSONObject();
jsonObj.put("Question","What is your name?");
jsonObj.put("Opt1","ji");
jsonObj.put("Opt2","ji");
jsonObj.put("opt3","ma");
jsonObj.put("opt4","sa");
String str= jsonObj.toString();
response.setContentType("text/plain");
response.getWriter().write(str);
%>
不幸的是我无法得到答复。
答案 0 :(得分:1)
您正在将JSON编写到HTML文档的正文中,然后将HTML文档作为响应发送。
不要那样做。响应应该只是 JSON。
答案 1 :(得分:0)
您需要使用内容类型application / json进行编写。
也不要在测试功能中使用eval。
当数据为json时,测试函数可以作为json对象访问数据!
如果解析字符串使用。
JSON.parse(string).
但不要使用eval