我开始使用 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 信息:
- 收到数据后的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/