javascript - JSON JavaScript 不起作用?

标签 javascript java json rest jersey

我开始使用 bootstrap 开发一个 Web 界面,因此我使用 javascript 来接收一些 JSON 数据。 我的 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 的响应文本相关。

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

更多 Firebug 信息:

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

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

  • 查询标题 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

  • 响应头 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 中?

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

    我认为您遇到了 Same-Origin-Policy 的问题JS 的。因此,您无法加载您的字段。尝试在 Java 应用程序的 View 中实现 JS(以便您可以通过 http://访问它并与您的应用程序位于同一域中),然后重试。

    关于javascript - JSON JavaScript 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32180947/

    相关文章:

    javascript - 在 Javascript 中使用正则表达式

    Javascript - 按顺序遍历二叉树。最后一个值正在打印 undefined

    javascript - 检查图像是否存在,如果不存在则使用 Javascript 设置默认图像

    java - 从 UNKNOWN 到 UNKNOWN 的转换是不支持的异常(在用于迁移的 Java 程序中)

    jquery - 无法将 json 对象传递给 python 服务器程序

    javascript - 几个复选框和验证 jQuery

    java - 批量脚本安装

    java - 大整数的 Clojure Math/sqrt 精度

    python - 使用 Python 请求过滤来自网站 API 的 json 响应

    json - 可以在 JSON 模式 (v4) 中指定字符串的最小/最大长度吗?