java - 将 List<String> 传递给 Play Framework 中的 Jquery

标签 java jquery ajax playframework-2.0

我正在使用 Play 2.2.6,需要获取 List<String>String[]从 Controller 到我的 jQuery Ajax 调用。

我的 Controller 看起来像:

 public static Result list(){
    List<String> cname = new ArrayList<String>();
    String[] arr= new String[]{"abc","abc2"};
    return ok(index.render(arr));
}

索引方法代码:

public static Result index(){
    String[] arr= new String[]{"abc","abc2"};
    return ok(index.render(arr));
}

我的 jQuery 函数如下所示:

<script>
$(function() { 
    ajaxCall(); 
}); 
var ajaxCall = function() {
    var ajaxCallBack = {
        success : onSuccess,
        error : onError
    }

    jsRoutes.controllers.Application.list().ajax(ajaxCallBack);
};

var  onSuccess = function(data) {
    console.log(data)
} 
var onError = function(error) {
    alert(error);
}
</script>

该脚本位于index.scala.html 文件中,路由为:

GET     /                   controllers.Application.index()
POST    /                   controllers.Application.list()
GET     /javascriptRoutes   controllers.JavascriptRoute.javascriptRoutes

Ajax 响应非常适合字符串类型,例如如果我说

return ok("This is string");

然后我可以在 Ajax 响应中看到它,但无法弄清楚为什么数组或列表会抛出以下错误:

Internal server error, for (GET) [/] ->
cannot find symbol [symbol: method ok(java.lang.String[])] [location: class controllers.Application]

顺便提一下,我在路由中将此方法定义为 POST。

有什么建议吗?

最佳答案

问题是您正在使用渲染的索引模板进行响应,并且在尝试渲染该模板时抛出异常。您想要做的是使用 JSON 数据进行响应。

public static Result list(){
    String[] arr= new String[]{"abc","abc2"};
    return ok(Json.toJson(arr));
}

使用以下代码在我的浏览器中进行本地测试

$.ajax({
    method: "POST",
    url: "/",
    dataType: "script",
    success : function(data) {
        console.log(JSON.parse(data));
    }
});

编辑: 所以你可以这样做:

List<ObjectNode> objectNodes = new ArrayList<>();
ObjectNode objectNode = Json.newObject();
objectNode.put("Latitude", "13.679389");
objectNode.put("Longitude", "-13.679389");
objectNodes.add(objectNode);
// create loop to add more nodes
return ok(Json.toJson(objectNodes));`

在您的 ajax 响应中,您现在将拥有一个包含经度和纬度值的节点列表

关于java - 将 List<String> 传递给 Play Framework 中的 Jquery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31880167/

相关文章:

javascript - 图库图片没有变化

jquery - 使用 jQuery 从 Flickr 获取图像的高度而不加载图像文件?

java - 如何使用 AChartEngine 设置不同于饼图中标题的图例..?

java - GSSContext AcceptSecContext 方法中的安全漏洞? (JAVA)

Jquery:在内存中预构建

jquery - WebGrid 页脚获取当前页面的样式

java - @Range 在 spring mvc 中不起作用

java - 只获取相同的udp数据包

javascript - 对 Ajax 请求执行两个成功处理程序

javascript - TinyMCE 的 multipart/form-data、ajax 和 textarea 问题