JSON Javascript不';不行?
我开始用bootstrap开发一个webinterface,所以我使用javascript来接收一些JSON数据。 我的JSON字符串是用JAVA中的JSONObject构建的,我使用了RestFUL服务 Java代码: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 {
@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信息:
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 ErrorDONE 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 ErrorDONE 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”