2016-11-18 3 views
0

У меня есть этот метод в контроллерея не могу получить JSon массива из контроллера пружинного отдыха и заполнить JQuery DataTable

@RequestMapping(value = "/updateWithParams", method = RequestMethod.GET) 
    @ResponseBody 
    public List<ResolutionDto> updateWithParams() { 
     List<ResolutionDto> list = new ArrayList<>(); 
     List<Resolution> resolutions = resolutionService.findAll(); 
     for (Resolution resolution : resolutions) { 
      list.add(new ResolutionDto(resolution.getId(), resolution.getName(), resolution.getStatus(), resolution.getDateCreated(), resolution.getUserName())); 
     } 
     return list; 
    } 

Это ResolutionDto

@Data 
@AllArgsConstructor 
public class ResolutionDto { 
    public Long id; 
    private String name; 
    private Integer status; 
    private Date dateCreated; 
    private String userName; 
} 

А на стороне клиента, я хочу получить этот массив как JSON и заполнить JQuery DataTable.

function loadTable() { 
     $.ajax({ 
      type: 'GET', 
      dataType: "json", 
      url: '/updateWithParams', 
      success: function (data) { 
       var jsdata = JSON.parse(data); 
       var datatable = $('#example').dataTable().api(); 
       datatable.fnAddData(jsdata); 
      }, 
      error: function (xhr, str) { 
       alert("error"); 
      } 
     }); 
    } 

Но это не сработало. Я thik проблемы в этой линии var jsdata = JSON.parse(data);

, но я не понимаю, как это исправить

+0

Если бы вы могли добавить в DataTable инициализации Javascript, которая может быть полезной. На всякий случай проблема связана с параметрами DataTable. – Adrian

ответ

0

Давайте забудем о Ajax вещи на мгновение, как твой выглядит прекрасно.

Там нет ничего плохого с JSON.parse(data), его просто лишними, как dataType: "json" указывает, что тип данных, которые вы ожидаете от сервера является JSON.

Теперь это в вашем контроллере метода (как раз перед итерацией части):

if (resolutions .isEmpty()) { 
System.out.print("The resolutions list is empty!"); 
} 

Если да, то это проблема, свойство в DTO является не назначены с любыми значениями, поэтому Список буквально пуст. Если это так, то люди ничего не могут сделать, так как вы не указали свой сервис, поэтому никто не может позволить себе увидеть, как данные инициализируются или создаются на каких частях ваших кодов.

0

JSON.parse() больше не нужен, поскольку он автоматически анализируется. Попробуйте это:

$.ajax({ 
url: "url", 
type: "get|post", 
contentType: "application/json", 
success: function(data) { 
// try printing, to test 
data.foreach(function(obj, index)) { 
console.log(obj.name); 
} 
} 
    }); 

 Смежные вопросы

  • Нет связанных вопросов^_^