我是网络开发的新手。我的工作是从服务器获取数据并使用amcharts每隔1或2秒绘制一次。
这是我到目前为止所做的:
<form id="getdata" role="form" method="post" action=@routes.DataApplication.get_data()>
<input type="text" name="device" id="device">
<input type="text" name="type" id="type">
<button id = "submit" type="submit">Submit</button>
</form>
输入设备并输入并单击提交按钮后,它将运行Java方法get_data()
。该方法将搜索数据库并返回与设备名称匹配的数据,但事物是它将显示另一页面中的数据,例如www.somepage/getdata
。上面的html位于www.somepage/data
页面。
我尝试使用 jquery .post()
,但问题是它需要一个网址,我尝试将/getdata
传递给它但是没有用。
我的问题是:有没有办法保存我们从@routes.DataApplication.get_data()
操作中获取的数据而无需重新加载页面?
顺便说一下,我正在使用 play 框架来开发网页。
更新
好的,现在做一些进展,我尝试使用ajax帖子,但数据返回(在控制台中)是这样的:
[Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, Object]
这里我有11个物体。如果我不使用ajax帖子(使用原始的帖子表单方法),我也会获得11个数据点。
这是我的代码:
<script>
$('#driver').click(function(evt) {
var dataabc = $('form').serialize();
console.log(dataabc);
$('#errors').hide();
$.ajax({
type : 'POST',
data : dataabc,
url : '@routes.DataApplication.get_data()',
success : function(data) {
alert("good");
console.log(data);
},
error : function(result) {
setError('Make call failed');
}
});
return false;
});
</script>
get_data()
所做的只是获取用户输入数据(表单)并从数据库和return ok(node);
获取相应的数据。此节点为JsonNode
任何帮助将不胜感激..
答案 0 :(得分:1)
由于您在javascript中获取了一个对象数组,因此它存储在data
中。你可以遍历它并显示内容是一些div标签。
实施例: 在成功调用ajax之后创建一个空div来填充数据。
<div id="mytextarea"></div>
然后在你的ajax success
中,而不是打印到控制台,你将循环遍历数组并将数据附加到div标签的innerHTML,如此...
var myTextArea = document.getElementById('mytextarea');
for (var x = 0; x < data.length; x++){
myTextArea.innerHTML = myTextArea.innerHTML + data[x].id + '<br/>';
}
编辑1:我看到您了解对象的属性,因此我更新了代码,只将id
附加到文本区域。
答案 1 :(得分:0)
告诉我们url返回的确切内容将非常有帮助。通常应该是XML或JSON。 您可以使用FireBug或任何其他开发人员工具来捕获响应并在此处发布。
答案 2 :(得分:0)
IT并不决定要返回什么 - 它就是你!
如果您在get_data()
操作中返回实例JSON对象,您的AJAX将收到JSON,请自行检查:
public static Result get_data(){
ObjectNode node = Json.newObject();
node.put("hello", "world");
return ok(node);
}