Добрый день. Имеется массив такой структуры:
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);
}
Подскажите пожалуйста что делаю не так?