使用 JSON 进行数据传输

发布于 2024-11-01 13:21:05 字数 1800 浏览 0 评论 0原文

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

%>

不幸的是我无法得到响应。

I am trying to get a piece of data from server using JSP technology. I am using JSON object to do so. On client side i am using XMLHttpRequest to get the data.

To check whether it works properly, i wrote a piece of code as follow:

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

on server side i did as follow:

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

%>

Unfortunately i am not able to get the response.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

一片旧的回忆 2024-11-08 13:21:06

您将 JSON 写入 HTML 文档的正文,然后发送 HTML 文档作为响应。

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

You are writing your JSON into the body of an HTML document, and then sending the HTML document as the response.

Don't do that. The response should be just the JSON.

久隐师 2024-11-08 13:21:06

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

也不要在测试函数中使用 eval。

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

在解析字符串时使用。

JSON.parse(string).   

但不要使用 eval

You need to write with content type application/json.

Also don't use eval in test function.

When the data is json the test function can access the data as the json object!

In the event of parsing a string use.

JSON.parse(string).   

But don't use eval

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文