Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.04.2019, 07:47
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 252

Помогите дописать функцию, чтобы ajax запрос не возвращал [object Object]
Добрый день. Имеется массив такой структуры:
var a = [];
a['operationName'][0] = {'operation': 1 , 'name': 2, 'time': 3};
a['pf1'] = 1;
a['pf2'] = 2;
};


Есть функция для отправки post запроса. Ее вроде как нужно доделать чтобы можно было отправить такой массив.
function postAjax(url, data, success) {
    var token = document.querySelector('meta[name="csrf-token"]').getAttribute('content');
    var params = typeof data == 'string' ? data : Object.keys(data).map(
            function(k){ return encodeURIComponent(k) + '=' + encodeURIComponent(data[k]) }
        ).join('&');
 
    var xhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
    xhr.open('POST', url);
    xhr.onreadystatechange = function() {
        if (xhr.readyState>3 && xhr.status==200) { success(xhr.responseText); }
        if (xhr.status==500) { console.log(xhr.responseText); }
    };
    xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
    xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    xhr.setRequestHeader('X-CSRF-Token', token);
    xhr.send(params);
    return xhr;
}


Если я просто отправлю свой массив в php таким образом:
postAjax('index.php?r=post/insert-check-list', a, function(data){
      var json = JSON.parse(data);
      console.log(json);
});


То вернется такой ответ:
operationName: "[object Object]"
pf1: "1"
pf2: "2"


В php происходит просто:
public function actionInsertCheckList(){
        $result = $_POST;
        return json_encode($result);
}

Подскажите пожалуйста что делаю не так?
Ответить с цитированием
  #2 (permalink)  
Старый 24.04.2019, 07:54
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,296

Сообщение от Artur_Hopf Посмотреть сообщение
Добрый день. Имеется массив такой структуры:
var a = [];
a['operationName'][0] = {'operation': 1 , 'name': 2, 'time': 3};
a['pf1'] = 1;
a['pf2'] = 2;
};
Почитай внимательно про массивы...
https://learn.javascript.ru/array

А потом про объекты...
https://learn.javascript.ru/object

Последний раз редактировалось ksa, 24.04.2019 в 07:57.
Ответить с цитированием
  #3 (permalink)  
Старый 24.04.2019, 08:27
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 252

ksa,
и?
Цитата:
В массиве может храниться любое число элементов любого типа.

В том числе, строки, числа, объекты, вот например:

// микс значений
var arr = [ 1, 'Имя', { name: 'Петя' }, true ];

// получить объект из массива и тут же -- его свойство
alert( arr[2].name ); // Петя
Ответить с цитированием
  #4 (permalink)  
Старый 24.04.2019, 08:42
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 10,431

Сообщение от Artur_Hopf
Имеется массив такой структуры
Не может быть такой структуры. Посмотрите в отладчике и на строку a['operationName']... сразу будет выдана ошибка.
Ответить с цитированием
  #5 (permalink)  
Старый 24.04.2019, 09:13
Профессор
Отправить личное сообщение для Artur_Hopf Посмотреть профиль Найти все сообщения от Artur_Hopf
 
Регистрация: 13.03.2018
Сообщений: 252

Хорошо ,всем спасибо, отправил по другому
Ответить с цитированием
  #6 (permalink)  
Старый 26.04.2019, 07:32
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,296

Сообщение от Artur_Hopf
В массиве может храниться любое число элементов любого типа.
В том числе, строки, числа, объекты, вот например
"Храниться" и быть "ключем/индексом" это кагбэ разные вещи...

Т.ч. повторюсь - ты еще не понял, что такое массивы.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить данные из JSON. triest Общие вопросы Javascript 4 09.11.2016 01:07
2-ой select грузит [object Object] помогите! espltd AJAX и COMET 1 05.08.2014 23:01
Как сделать так чтобы ajax возвращал результат? Rooner AJAX и COMET 7 28.06.2013 11:42
Помогите пожалуйста дописать 1 функцию (onmouseout) -user21- Элементы интерфейса 0 09.06.2010 21:04