繁体   English   中英

JSON Javascript不起作用?

[英]JSON Javascript doesn't work?

我开始使用引导程序开发Web界面,因此我使用javascript接收了一些JSON-Data。 我的JSON-String是使用JAVA中的JSONObjects构建的,并且我使用了Jersey RestFUL-Service。

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查询已完成,并且其状态为“ 200 OK”。 查询的答案是JSON字符串。

我还分析了脚本,它似乎在以下位置停止工作:

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

另外,我写出responseText的长度,结果为“ 0”。

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

- - - -编辑 - - -

更多Firebug信息:

  1. 接收到数据后的XMLHTTPRequest-Object数据:

DONE 4 HEADERS_RECEIVED 2
LOADING 3
OPENED 1 UNSENT 0 mozAnon false
mozBackgroundRequest false mozSystem false onloadend null ontimeout null readyState 1
response "" responseText "" responseType "" responseXML null status 0
statusText ""
timeout 0

  1. 查询标题Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Encoding gzip, deflate Accept-Language de-de,de;q=0.8,en-us;q=0.5,en;q=0.3 Connection keep-alive Host 127.0.0.1:8085 Origin null User-Agent Mozilla/5.0 (Windows NT 6.3; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0

  2. 响应标题Content-Type application/xhtml+xml Date Mon, 24 Aug 2015 22:56:18 GMT Server Apache-Coyote/1.1 Transfer-Encoding chunked

响应: {"test1":["test"],"test2":["test"],"test3":["test"],"test4":["test"],"test5":["test"],"test6":["test"],"test7":["test"]}

也许你可以帮我!

谢谢!

马尔科

如果您的JSON被接收为type="application/json或XML / HTML,我会很感兴趣。是否响应是XML,所以“对象”存储在http_request.XML

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

我认为您在使用JS的同源策略时遇到了问题。 因此,您无法加载字段。 尝试在Java-App的视图内实现JS(以便您可以通过http://并在与您的应用相同的域中访问它),然后重试。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM