табулятор: загрузка данных Google Sheets через Ajax - PullRequest
0 голосов
/ 14 марта 2019

Я пытаюсь уже несколько дней и не могу понять, как загрузить документ Google Sheets в Tabulator.

Что я сделал:

  • Получение данных JSON из документа Google Sheets
  • Добавлена ​​библиотека табуляторов на этой странице
  • Но все равно получаю эти ошибки:
    • Ошибка загрузки Ajax - Ошибка подключения: 0
    • Ошибка загрузки Ajax: Ответ {тип: «непрозрачный», url: «», перенаправленный: false, статус: 0, ok: false,…}
  • И как я могу получить поля 'entry'> 'gsx $ naam' - 'Joan van den Akker - KAV Holland' в столбце (ключ 'gsx $ naam' содержит объект '{"$ t" : "Joan van den Akker - KAV Holland"} 'в качестве значения, но мне нужно только имя ...)

Код моего табулятора:

    var table = new Tabulator("#baanrecords", {
        ajaxConfig:{
            mode: 'no-cors',
            method:'GET',
            credentials: 'same-origin',
            headers: {
                'Content-type': 'application/json; charset=UTF-8',
                'Accept': 'application/json',
                'X-Requested-With': 'XMLHttpRequest'
            },
        },
        ajaxURL: 'https://spreadsheets.google.com/feeds/list/1Ze31_SUFd0ZyqeG1mt1qrEU61onnYhmI9mR1BC1pM7Y/od6/public/values?alt=json',
        height:'400px',
        layout:'fitColumns',
        autoColumns:true,
        placeholder:'De records worden geladen, een moment...',
        index: 'onderdeelnaam',
        columns:[
            {title:"Onderdeel", field:"gsx$onderdeelnaam", sorter:"string", width:200},
            {title:"Prestatie", field:"gsx$prestatie", sorter:"number", formatter:"progress"},
            {title:"Eenheid", field:"gsx$prestatieeenheid", sorter:"string"},
            {title:"Naam", field:"gsx$naam", sorter:"string", align:"left", width:100},
            {title:"Categorie", field:"gsx$categorie", sorter:"string", sortable:true},
            {title:"Datum", field:"gsx$datum", sorter:"date", align:"left"},
            {title:"Plaats", field:"gsx$plaats", align:"right", sorter:"string"},
        ],
        ajaxResponse:function(url, params, response){
            //url - the URL of the request
            //params - the parameters passed with the request
            //response - the JSON object returned in the body of the response.
    
            return response.entry; //return the tableData property of a response json object
        },
    });
    table.setData("https://spreadsheets.google.com/feeds/list/1Ze31_SUFd0ZyqeG1mt1qrEU61onnYhmI9mR1BC1pM7Y/od6/public/values?alt=json");

К сожалению, я не могу понять, что я делаю неправильно. Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 10 апреля 2019
    bldgChange: function () {
      console.log(this.selected)
      this.tabulator.parameter = this.selected
      fetch('<API-URL>?Building=' + this.selected)
        .then(response => response.json())
        .then(json => this.tabulator.setData(json.recordset))
    },

Я отказался от ajaxURL, так как у слишком многих людей были проблемы с ним, а реальных решений не было.Это метод, который я создал для того, что мне нужно.Может быть, вы можете модифицировать его под свои нужды.

...