使用JSON进行数据传输

时间:2011-04-17 10:56:19

标签: javascript ajax json jsp xmlhttprequest

我正在尝试使用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);

%>

不幸的是我无法得到答复。

2 个答案:

答案 0 :(得分:1)

您正在将JSON编写到HTML文档的正文中,然后将HTML文档作为响应发送。

不要那样做。响应应该只是 JSON。

答案 1 :(得分:0)

您需要使用内容类型application / json进行编写。

也不要在测试功能中使用eval。

当数据为json时,测试函数可以作为json对象访问数据!

如果解析字符串使用。

JSON.parse(string).   

但不要使用eval