невозможно передать объект javascript в jquery.post - PullRequest
0 голосов
/ 01 октября 2019

У меня есть объект javascript, хранящийся в переменной dashboard_filter_value_attributes, в которой хранятся имена фильтров таблиц, которые я пытаюсь отправить по почте на мой контроллер rails для дальнейшей обработки.

, когда я делаю console.log(dashboard_filter_value_attributes), ясм. приведенный ниже вывод на консоли, я расширил 0-й индексный ключ, поэтому вы видите __proto__: Object в приведенном ниже выводе

{}
0:
filter_name: "Filter One"
__proto__: Object
1: {filter_name: "Filter Two"}
2: {filter_name: "Filter Theree"}
3: {filter_name: "Filter Four"}
4: {filter_name: "Filter Five"}
5: {filter_name: "Filter Six"}
6: {filter_name: "Filter Seven"}
7: {filter_name: "Filter Eight"}
8: {filter_name: "Filter Nine"}
9: {filter_name: "Filter Ten"}
__proto__: Object

Я определил let dashboard_filter_value_attributes = {};

, но яневозможно отправить объект по почте. Объект не передается и не обрабатывается во время выполнения jQuery.post, я также не вижу ошибок на консоли.

Вот мой jQuery.post вызов

let activeSheet = tableauViz.getWorkbook().getActiveSheet();
let viewName = 'my custom view';
let counter = 0;
let dashboard_filter_value_attributes = {};


activeSheet.getWorksheets().forEach(function(worksheet) {
  if (worksheet.getName() == "Filter") {
    worksheet.getFiltersAsync().then(function(filterParameterList) {
      filterParameterList.forEach(function(fp) {
        const name = filter ? fp.getFieldName() : fp.getName();
        dashboard_filter_value_attributes[counter] = {
          filter_name: name,
        };
        counter =  counter + 1;
      }
    });
  });
});

jQuery.post($('#new_dashboard_filter').attr('action'), {
  dashboard_filter: {
    name:viewName,
    dashboard_filter_values: dashboard_filter_value_attributes
  }
});

IЯ также пытался использовать JSON.strigify, но даже тогда я не могу отправить объект на мой контроллер rails.

Когда я использую console.log(JSON.strigify(dashboard_filter_value_attributes));, я вижу []

Любая помощь вэто было бы действительно здорово. Спасибо.

1 Ответ

0 голосов
/ 01 октября 2019

Это может быть в методе, используемом для определения вашего массива / объекта

Я определил let dashboard_filter_value_attributes = {};

Это определяет пустой объект, но тогда у вас естьзаполнить его с помощью цифровых клавиш (0-9), для чего обычно используется массив. Конечно, Массивы - это Объекты в JavaScript, но Объекты обычно имеют именованные ключи (filter_name_1 или что-то еще).

Краткая форма для определения Массива в JavaScript: [], а не {}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...