【问题标题】:Handle JSON server response in javascript在 javascript 中处理 JSON 服务器响应
【发布时间】:2013-04-04 19:21:39
【问题描述】:

我见过很多类似的问题,但他们没有为我的问题提供答案。 我的服务器形成 JSON 字符串并将其放入响应中:

List<String> list = getSomeList();
JSONArray jsArray = new JSONArray(list);
System.out.println(jsArray);
response.setContentType("application/json");
response.getWriter().write(jsArray.toString());

但是在我的 javascript 句柄函数中,当我提醒响应时,它会提醒所有页面!

function handleResponse(){    
 if(http.readyState == 4 && http.status == 200){  
  var response = http.responseText;
   if(response){ 
     alert(response); //alert all page!
     var list = JSON.parse(response.toJSON()); //doesn't work! 
 }       
} 

问题:如何在javascript中只分离jsArray?

P.S.据我了解,我的 JSON.parse(response.toJSON()) 不起作用,因为响应包含整个页面?

【问题讨论】:

  • jsArray.toString() 是否返回 JSON 对象?
  • 调试中:jsArray - JSONArray jsArray.toString - "["Harkiv","Kiev","Lviv"]"
  • 我不懂 java,但是在写完你的 jsArray 之后尝试关闭你的响应编写器。它可能类似于 response.getWriter().close();客户端, JSON.parse() 应该足够了。无需做 response.toJSON()
  • response.getWriter().close() - 是的,这就是我想要的。谢谢)

标签: javascript ajax json jsp


【解决方案1】:

免责声明:我不知道 java。

服务器端,问题可能是您的响应在写入 JSON 数组后没有关闭,允许写入其他 (html) 文本。试试这个:

response.setContentType("application/json");
response.getWriter().write(jsArray.toString());
response.getWriter().close();

客户端,responseText是一个字符串,字符串没有定义toJSON()函数。

var list = JSON.parse(http.responseText); 

应该足够了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-25
    • 1970-01-01
    • 2017-02-08
    • 1970-01-01
    • 1970-01-01
    • 2012-09-12
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多