У меня есть набор значений, которые необходимо передать на сервер, и я не могу заставить базовые функции, такие как JSON-декодирование, работать. Что-то здесь, я буду признателен, если кто-то посмотрит на этоКак передать массив объектов javascript в php?
У меня динамически сгенерированная таблица с редактируемыми значениями, которую я захватываю, когда пользователь нажимает кнопку «Добавить», толкает ее в массив и отправляет на сервер с помощью ajax вызов. Вот пример данных, посланных по тому, что я скопировал из console.log (data); линия.
var data = params + "&Details="+JSON.stringify(Details);
console.log(data); // &Id[]=1566&aId[]=1567&Details=[["1566","First File","sdf.pdf","general","file","",""],["1567","2nd file","test.png","image","file","",""]]
$.ajax({
type: 'POST',
url: editUrl,
dataType: 'json',
data: data,
success: function() { console.log('success'); }
error: function() { console.log('error'); }
});
На стороне сервера я получаю данные, но я не могу разобрать его в удобном формате
$ids = ($_POST['Id']); // this is a valid array
$details = ($_POST['Details']); // [[ 1566 , First File , , general , file , , ],[ 1567 , 2nd file , , image , file , , ]]
$details = json_decode($details); // getting JSON_ERROR_CTRL_CHAR error and null is returned
идеи, что случилось здесь?
Вы должны всегда использовать 'encodeURIComponent' при добавлении сложных параметров в URL , Или дайте объект jQuery, и он автоматически сделает кодировку. – Barmar