我在服务器端有以下代码:
@RequestMapping(value="friendFamily/getFriendsByUserId", method=RequestMethod.GET,
produces = "application/json")
public String getFriendsByUserId(@RequestParam("userId") Long userId){
//....
List<User> friendsList = (((ArrayList<Friends>)session.createCriteria(Friends.class).
add(Restrictions.eq("person", user)).list()).get(0)).getFriends();
JSONArray array = new JSONArray();
for (User tempUser: friendsList){
array.put(new JSONObject(tempUser));
}
return array.toString();
在客户端,我想将这些数据放入数据表:
$("#browseFriendsAndFamily").click(function(){
var contPath='<%=request.getContextPath()%>';
$.get(contPath + "/friendFamily/getFriendsByUserId",
"userId="+loggedUser.id, function(friendsList){
$("#friendFamilyDialog").dialog("open");
friendsTable = $("#friendsTable").dataTable({
"bJQueryUI": true,
"aoColumnDefs": [ {"bVisible": false, "bSortable": false, "aTargets": [3]}],
"bSortClasses": false
});
familyTable = $("#familyTable").dataTable({
"bJQueryUI": true,
"aoColumnDefs": [ {"bVisible": false, "bSortable": false, "aTargets": [3]}],
"bSortClasses": false
});
for(var i=0, length=friendsList.length; i<length; i++){
friendsTable.fnAddData(friendsList[i].name, friendsList[i].surname,
friendsList[i].login, friendsList[i].id);
console.log(friendsList[i].login);
}
});
});
但在数据表中,例如,如果我得到一个name="Paul"姓="Smith"login="Paul123"id="38"的人,它的行为就像它不理解它,就像一个JSON数组,但就像一个String数组,它把它放在名称列"p"、姓氏列"a"、登录列"u"中,用一个词来说,它认为它"不理解",那就是JSON,这对我来说有点奇怪。我做错了什么?如果我写:
console.log(friendsList[i].login)
我看到了正确的值,例如"Paul123"。如果有人帮我,我会很高兴的——提前谢谢你。
@更新:我现在看到了一点奇怪的行为——即使我这样做:
for(var i=0, length=friendsList.length; i<length; i++){
var name = friendsList[i].name;
var surname = friendsList[i].surname;
var login = friendsList[i].login;
var id = friendsList[i].id;
friendsTable.fnAddData(name, surname,
login, id);
console.log(friendsList[i].surname);
}
它仍然以相同的方式运行。。。我在浏览器中看到变量值是正确的,但在数据表中,它的工作方式与以前相同,它在表的列中从变量名称中进一步放入"char"值(它将其视为"C字符串")。。。
@已回答。以下是Datatables论坛的解决方案->Datatables将String变量视为C字符串(char[])?(点击)