从REST服务器解析JSON

时间:2012-11-12 06:50:05

标签: java javascript json rest jersey

我想要实现的是使用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"
  }
   ]
}

内容的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 cannot load http://localhost:8004/project5/terms.json. Origin null is not allowed by Access-Control-Allow-Origin.  现在错误

2 个答案:

答案 0 :(得分:1)

阅读上一次编辑,您似乎遇到了跨站点脚本问题。您正在向与您的HTML网页所在的域不同的网站发出ajax请求。

也许您只在开发中遇到此问题,而在生产环境中,HTML页面将来自与ajax请求相同的站点。然后,您应该考虑使您的开发环境与实际部署类似。

例如,使用“真正的”Web服务器来传递HTML页面,而不仅仅是从本地驱动器打开HTML页面。

答案 1 :(得分:0)

你应该简单地说     的console.log( “步骤1”)

或2或3,代码的各个部分,并查看它停止记录的位置。 那就是你的问题所在。

您还可以记录任何可能为您提供线索的其他内容。