【发布时间】:2017-04-08 06:33:32
【问题描述】:
我必须每秒调用并从 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 不会显示任何警报。但是如果我将控制器中的返回类型更改为字符串,那么它会在 ajax 响应中显示正确的 JSON 字符串。
即[{"sno":"3618","data":"01","datetime":"2017-04-05 12:33:26.266"}]
如果我携带这个,那么我无法从 JSON 字符串中获取数据。
请告诉我我的问题是什么。还是有其他方法可以做到这一点。?
【问题讨论】:
-
在将方法的返回类型更改为字符串后,我没有得到您所面临的问题?如果您想从响应中获取价值,只需使用 data.sno
-
如果我将 JSON 数据作为字符串从控制器返回到 ajax 响应,则
alert(data);它显示[{"sno":"3618","data":"01","datetime":"2017-04-05 12:33:26.266"}]现在如果我要获取特定数据,例如alert(data.sno);,那么它显示 undefine。 -
我对
contentType: "application/json", dataType: "json",存在语法问题有疑问。那是双引号或单引号。如果我错了,你能纠正我吗.. -
你有json数组,试试data[0].sno
-
users变量在哪里定义?
标签: javascript java ajax jsp spring-mvc