Конфигурация Ajax на стороне сервера для таблиц угловых данных для запроса GET - PullRequest
0 голосов
/ 11 января 2019

Я использую Angular версии 5. Мне нужно сделать Server Side для angular-datatables. Это работает с запросом POST, но я не могу сделать это с запросом GET.

Существует пример API (https://angular -datatables-demo-server.herokuapp.com / ), он дает одинаковый ответ для запросов GET и POST. Angular-datatables делает на стороне сервера для POST, но не GET.

Вот пример кода (https://stackblitz.com/edit/visible-columns-with-serverside-loading-angular-way).

1 Ответ

0 голосов
/ 15 января 2019

Наконец-то все заработало. Мне нужно было отправить информацию о данных через параметры запроса. Вот что я сделал.

 this.dtOptions = {
      paging: true,
      lengthChange: false,
      searching: true,
      pageLength: 10,
      columnDefs: [{ targets: 3, orderable: false }],
      pagingType: 'simple_numbers',
      order: [[0, 'desc']],
      serverSide: true,
      processing: true,
      ajax: (dataTablesParameters: any, callback) => {
        const params = this.objectToHttpParams(dataTablesParameters);
        console.log('params', params);

        this.http
          .get(
            'http://myapi.com',
            {
              params: params,
              headers: new HttpHeaders().set(
                'token',
                localStorage.getItem('token')
              )
            }
          )
          .subscribe(resp => {

            this.result = resp['data'];

            callback({
              recordsTotal: resp['length'],
              recordsFiltered: resp['length'],
              data: []
            });
          });
      }
    };

// Helper Function
 objectToHttpParams(obj: any) {
    return Object.entries(obj || {}).reduce((params, [key, value]) => {
      return params.set(
        key,
        isObjectLike(value) ? JSON.stringify(value) : String(value)
      );
    }, new HttpParams());
  }

С этими параметрами я могу заставить его работать с GET-запросами, а также отправлять HTTP-параметры и заголовки вместо отправки в теле.

...