我想要实现的是使用 Google 的图形 API 绘制表格,当页面加载时,它会查询我的 REST 服务器以获取 JSON 数据。这是我的 JavaScript 函数。
JavaScript 控制台没有显示任何错误。
$(document).ready(function() {
$.ajax({
url: 'http://localhost:8004/project5',
dataType: "json",
async:false,
error: function(error){
console.debug(error);
},
success: function(data)
{
alert("YESSSSS");
var data = data.results;
for(var i=0; i<data.length; i++) {
mytable[arraysize] = new terms(data[i].term1, data[i].term2, (data[i].contains)/((data[i].contains)+ (data[i].notcontains)));
arraysize +=1;
}
drawTable();
}
});
});
这是我在浏览器中使用“http://localhost:8004/project5”查询服务器时返回的 JSON
{
"results":[
{
"term1":"test",
"term2":"hard",
"contains":"32",
"notcontains":"55"
},
{
"term1":"test",
"term2":"easy",
"contains":"32",
"notcontains":"55"
},
{
"term1":"pizza",
"term2":"hut",
"contains":"32",
"notcontains":"55"
}
]
}
content 的 html 内容未设置为“YESSSS”,我用它来测试该功能是否成功。当页面加载时,其余服务器识别出它被查询并成功返回 JSON,因此我认为问题在于从返回的 JSON 中获取数据。这就是我陷入困境的地方。
编辑:看来我的成功函数没有被调用。这是在 java REST 服务器 JAX-RS 中调用的函数。生成 JSON。
@GET
@Produces(MediaType.APPLICATION_JSON)
public String getStudentByid(@QueryParam("id") String id) {
System.out.println("Queried");
if (id == null)
return Terms.stringTerms(container);
return Terms.getTermsByFirst(container, id);
}
我得到了一个
XMLHttpRequest 无法加载 http://localhost:8004/project5/terms.json。 Access-Control-Allow-Origin 不允许 Origin null。
现在出错了
最佳答案
阅读您的上次编辑,您似乎遇到了跨站点脚本问题。您正在向一个站点发出 ajax 请求,该站点与您的 HTML 页面所在的域位于不同的域中。
也许您只在开发中遇到这个问题,而在生产中,HTML 页面将来自与 ajax 请求相同的站点。然后您应该考虑使您的开发环境类似于真实的部署。
例如,使用“真正的”网络服务器来交付 HTML 页面,而不仅仅是从本地驱动器打开 HTML 页面。
关于java - 从 REST 服务器解析 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13339413/