我必须每秒调用并从rest API获取数据。所以我用时间1秒调用方法。如下。
var myVar = setInterval(function(){ getData1() }, 1000);
以下是我的Javascript函数,它调用控制器。
function getData1(){
var url=CONTEXT_ROOT+"/login/getdashboarddata1";
$.ajax({
type: "POST",
url: url,
contentType: "application/json",
dataType: "json",
data:{},
success: function(data){
alert(data);
},
error: function(e){
//alert(e);
}
});
}
这是我的控制器代码
@RequestMapping(value="/getdashboarddata1", method=RequestMethod.POST)
public JSONObject @ResponseBody getDashboardData1() throws JsonParseException, JsonMappingException, NullPointerException{
RestTemplate restTemplate = new RestTemplate();
String url = "http://localhost:8080/r_f22bc0ac1fe48bce/dataService/lastdata/";
String user = restTemplate.getForObject(url, String.class);
System.out.println("user: "+user);
JSONObject obj = null;
try {
obj = new JSONObject(user);
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
如果我运行该程序,则jsp不会显示任何警报。但是如果我将控制器的返回类型更改为String,那么它会在ajax响应中显示正确的JSON字符串。
即。 [{"sno":"3618","data":"01","datetime":"2017-04-05 12:33:26.266"}]
如果我携带这个,那么我无法从JSON字符串中获取数据。
请告诉我我的问题是什么。或者还有其他方法可以做到这一点。
答案 0 :(得分:1)
你有json数组
[{"sno":"3618","data":"01","datetime":"2017-04-05 12:33:26.266"}]
然后使用索引访问它:
data[0].sno
答案 1 :(得分:1)
只需从getDashboardData1()
然后在AJAX成功回调:
JSON.parse(data)[0]['sno'];
请告诉我我的问题是什么。或者还有其他办法吗? 此。?
您无法访问string
字面值的属性,它必须是json object
。