JSON Javascript不';不行?

JSON Javascript不';不行?,javascript,java,json,rest,jersey,Javascript,Java,Json,Rest,Jersey,我开始用bootstrap开发一个webinterface,所以我使用javascript来接收一些JSON数据。 我的JSON字符串是用JAVA中的JSONObject构建的,我使用了RestFUL服务 Java代码: @GET @Path("test") @Produces(MediaType.TEXT_HTML) public String createTestJson(){ JSONObject jsobject= new JSONObject(); try {

我开始用bootstrap开发一个webinterface,所以我使用javascript来接收一些JSON数据。 我的JSON字符串是用JAVA中的JSONObject构建的,我使用了RestFUL服务

Java代码:

@GET
@Path("test")
@Produces(MediaType.TEXT_HTML)
public String createTestJson(){

    JSONObject jsobject= new JSONObject();

    try {
        jsobject.append("test1", "test");
        jsobject.append("test2", "test");
        jsobject.append("test3", "test");
        jsobject.append("test4", "test");
        jsobject.append("test5", "test");
        jsobject.append("test6", "test");
        jsobject.append("test7", "test");

    }catch(Exception e){
        e.printStackTrace();
    }

    return jsobject.toString();

}
当我使用浏览器调用URL时,它会工作:

{"test1":["test"],"test2":["test"],"test3":["test"],"test4":["test"],"test5":["test"],"test6":["test"],"test7":["test"]}
我创建了一个JavaScript函数,它应该检索JSON字符串并填充HTML页面中的特定值

function loadJSON()
{
   var data_file = "http://127.0.0.1:8085/Rest/test/test";
   var http_request = new XMLHttpRequest();
   try{
      // Opera 8.0+, Firefox, Chrome, Safari
      http_request = new XMLHttpRequest();

   }catch (e){
      // Internet Explorer Browsers
      try{
         http_request = new ActiveXObject("Msxml2.XMLHTTP");
      }catch (e) {
         try{
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
         }catch (e){
            // Something went wrong
            alert("Your browser broke!");
            return false;
         }
      }
   }

   http_request.onreadystatechange  = function(){
      if (http_request.readyState == 4  )
      {

        alert(http_request.responseText.length);
        var jsonObj = JSON.parse(http_request.responseText);

        document.getElementById("test1").innerHTML =  jsonObj.test1;
        document.getElementById("test2").innerHTML = jsonObj.test2;
      }
   }
   http_request.open("GET", data_file, true);
   http_request.send();
}
当我用firebug分析文档时,我可以看到GET查询已经完成,它的状态是“200OK”。查询的答案是JSON字符串

我还分析了脚本,它似乎停止了工作:

var jsonObj = JSON.parse(http_request.responseText);
另外,我写出了responseText的长度,结果是“0”

所以我真的不明白这个问题。根据firebug,脚本获取数据,但在解析JSON字符串时崩溃。它可能与长度为0的responseText相关

-------编辑-----

更多Firebug信息:

  • 接收数据后,XMLHTTPRequest对象数据:
  • DONE 4
    标题\u收到2个
    加载3
    开放1 未发送0 莫扎农错
    mozBackgroundRequest错误 莫扎特系统错误 onloadend null ontimeout空值 readyState 1
    响应“” 响应文本“” 响应类型“” responseXML null 状态0
    状态文本“”
    超时0

  • 查询标题
    接受text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8
    接受编码gzip,放气
    接受语言德德,德;q=0.8,在美国;q=0.5,en;q=0.3
    连接保持活动状态
    主机127.0.0.1:8085
    原点为空
    用户代理Mozilla/5.0(Windows NT 6.3;WOW64;rv:24.0)Gecko/20100101 Firefox/24.0

  • 响应头
    内容类型应用程序/xhtml+xml
    日期2015年8月24日星期一22:56:18 GMT
    服务器ApacheCoote/1.1
    传输编码分块

  • 答复:
    {“test1”:[“test”],“test2”:[“test”],“test3”:[“test”],“test4”:[“test”],“test5”:[“test”],“test6”:[“test”],“test7”:[“test”]}

    也许你能帮我

    谢谢大家!


    Marko

    如果您的JSON作为
    type=“application/JSON
    接收,或者作为XML/HTML接收,我会感兴趣。可能是响应是XML,因此“对象”存储在
    http\u request.XML

    ----------编辑----------


    我认为您的JS存在问题。因此无法加载您的字段。请尝试在Java应用程序的视图中实现JS(以便您可以通过http://并在与应用程序相同的域中访问它),然后重试。

    如果您的JSON作为
    类型接收,我会感兴趣。”application/json
    或XML/HTML格式。是否响应是XML,因此“对象”存储在
    http\u request.XML

    ----------编辑----------



    我认为您对JS的使用存在问题。因此,无法加载字段。尝试在Java应用程序的视图中实现JS(以便您可以通过http://并在与应用程序相同的域中访问它),然后重试。

    字符串长度为0,您指责函数没有解析它?但为什么字符串为0?@Hacketo我知道jQuery.parseJSON返回对象,但通过这一点,您可以从Json中获得任何想要的东西。可能我错了,但据我所知。谢谢,但问题是responsetext是一个空字符串,我真的不知道为什么?
    DONE 4 Header\u收到2加载3打开1未发送0 mozAnon false mozBackgroundRequest false mozSystem false onloadend null ontimeout null readyState 4响应“”responseText“responseType”responseXML null status 0 statusText“timeout 0
    字符串的长度为0,您指责函数没有对其进行解析?但为什么字符串为0?@Hacketo我知道jQuery.parseJSON返回对象,但通过这一点,您可以从Json中获得任何想要的结果。可能我错了,但据我所知。谢谢,但问题是responsetext是一个空字符串,我真的不知道为什么?
    DONE 4 Header\u收到2加载3打开1未发送0 mozAnon false mozBackgroundRequest false mozSystem false onloadend null ontimeout null readyState 4响应“”responseText“responseType”responseXML空状态0 statusText“超时0
    @Hacketo black magic,已将其删除。考虑隐式转换为,my Error
    DONE 4 Header\u收到2加载3打开1未发送0 mozAnon false mozBackgroundRequest false mozSystem false onloadend null ontimeout null readyState 4 response“responseText”responseType“responseXML null status 0 statusText”超时0
    这是XMLHTTPRequest对象包含的内容。因此responseXML为null,responseText为空字符串。所以我不明白?是的,这很奇怪。当您在调试器的“网络”选项卡上查看请求时,响应是什么?响应头
    HTTP/1.1200ok服务器:apachecoyote/1.1内容类型:应用程序/json传输编码:分块日期:Mon,2015年8月24日14:06:14 GMT
    -------------------------------------查询标题
    GET/Rest/test/testHTTP/1.1主机:127.0.0.1:8085用户代理:Mozilla/5.0(Windows NT 6.3;WOW64;rv:24.0)Gecko/20100101 Firefox/24.0接受:text/html、application/xhtml+xml、application/xml;q=0.9,*/*;q=0.8接受语言:de,de;q=0.8,在美国;q=0.5,en;q=0.3接受编码:gzip,泄气来源:空连接:保持活动状态
    @Hacketo black magic,将其删除。考虑隐式转换为,my Error
    DONE 4 Header\u收到2加载3打开1未发送0 mozAnon false mozBackgroundRequest false mozSystem false onloadend null ontimeout null readyState 4 response“responseText”responseType“responseXML null status 0 statusText”