передача данных с использованием JSON - PullRequest
0 голосов
/ 17 апреля 2011

Я пытаюсь получить часть данных с сервера, используя технологию 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 ]

1 голос
/ 17 апреля 2011

Вы записываете свой JSON в тело документа HTML, а затем отправляете документ HTML в качестве ответа.

Не делайте этого.Ответ должен быть просто JSON.

0 голосов
/ 17 апреля 2011

Вам нужно написать с типом контента application / json.

Также не используйте eval в тестовой функции.

Когда данные являются json, тестовая функция может получить доступ к данным как объект json!

В случае анализаиспользование строки.

JSON.parse(string).   

Но не используйте eval

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...