【发布时间】:2014-11-02 17:19:02
【问题描述】:
我想通过 ajax 发送 json 请求,同样我想从控制器中解析。请在下面找到我的代码(查看部分)
<input type="checkbox" id="selectall" />
<table id="tbl" border="1">
<tr>
<td>
<input type="checkbox" />
</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
<tr>
<td>
<input type="checkbox" />
</td>
<td>2</td>
<td>3</td>
<td>5</td>
</tr>
</table>
<input type="button" id="save" value="save" />
<div id="log"></div>
JQuery 部分
$("#save").click(function() {
//get all the checked checboxex
$('#tab input:checkbox:checked').each(function() {
//for each checked checkbox, iterate through its parent's siblings
var array = $(this).parent().siblings().map(function() {
return $(this).text().trim();
}).get();
//to print the value of array
console.log(JSON.stringify(array))
$.ajax({
type : 'POST',
url : '@routes.Application.save()',
dataType: "json",
data: JSON.stringify(array),
success : function(data) {
console.log("success");
},
error : function() {
alert("failure")
}
});
})
控制器部分
public static Result saveboxes()
{
JsonNode json = null;
try{
DynamicForm dynamicForm = new DynamicForm();
dynamicForm = dynamicForm.bindFromRequest();
Dynamic dynamic = dynamicForm.get();
json = Json.toJson(dynamic.getData());
//String data = json.get("data").asText();
JsonNode jsonData = Json.parse(json.asText());
logger.info(jsonData.asText());
}
catch(Exception e)
{
e.printStackTrace();
}
return null;
}
我收到空指针异常。该视图将根据用户通过复选框的选择返回多行值。如果用户选择三行,输入将是 ["2","3","4"]["2","3","4"]["2","3","5"]。我需要获取控制器中的所有值。如果你建议比这更好的方法。会很棒的。
【问题讨论】:
-
考虑使用 Play 的 JavaScript 路由支持。您可以为控制器生成 JS 路由器并使用它们,而不是使用 jQuery AJAX 支持——这也将处理 HTTP 方法类型。
标签: jquery ajax json playframework