Передать массив в формате JSON из AJAX в PHP и обратно
Здравствуйте!
Помогите пожалуйста разобраться.
Нужно передать массив из AJAX в PHP, а потом другой массив из PHP обратно в AJAX.
Массив в JS формируется при помощи обхода checkbox на форме и отбираются те, которые checked и их значения собираются в массив.
За вечер перелопатил кучу статей, доков и тем на форумах (в том числе несколько тем здесь). Вроде бы всё делаю, как завещано, а не хочет нормально работать злодей
Вот JS(на func: 9 не обращайте внимания, если он не мешает работе с json):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
$(document).ready(function() { $('#some_button').on('click', function() { var checks = new Array(); $("input[name='ls_id']:checked").each(function() {checks.push($(this).val());}); $.ajax({ type: 'POST', url: "какой-то url", dataType: 'json', cache: false, data: {checks: checks, func: 9}, success: function(data) { } }); }); });
$json = json_decode($_POST['checks'], true); print_r ($json);
В результате PHP возвращает ошибку: Warning: json_decode() expects parameter 1 to be string, array given
Помогите пожалуйста понять, как заставить их общаться в обоих направлениях.
Как передать массив из php в ajax?
Перерыл все форумы, все говорят о передаче через JSON, но я понятия не имею как это работает. .
Как передать массив из javascript в php используя json
Как передать массив в php, и там вывести этот массив используя json? var massiv = ;
Ajax передать массив в php (небольшая заморочка)
В двух словах: Подключаемся к ссылке, получаем json, в цикле выдергиваем id адреса. Нужно эти id.
Передать через AJAX в PHP двумерный массив
Добрый день. Есть примерно такой код: var range = , sliderValues = ; . sliderValues = range;.
data:
Форма записи не корректна
Cначала вам нужно преобразовать массив в строку для передачи его на сервер.Это можно сделать через формат JSON
var data='checks='+JSON.stringify(checks);
input type="checkbox" name="ls_id" value="1"> input type="checkbox" name="ls_id" value="2"> input type="checkbox" name="ls_id" value="3"> button value="click" id="some_button" value="">send_ajax/button>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
script> $(document).ready(function() { $('#some_button').on('click', function() { var checks = new Array(); $("input[name='ls_id']:checked").each(function() {checks.push($(this).val());}); var data='checks='+JSON.stringify(checks); //alert(data); $.ajax({ type: 'POST', url: "u.php", dataType: 'json', cache: false, data: data, success: function(data) { alert(data) } }); }); });
var_dump(json_decode($_POST["checks"]));
koza4ok, спасибо за ответ!
Только вот что-то не понял строку:
var data='checks='+JSON.stringify(checks);
var data=JSON.stringify(checks);
rean1mator, checks — это имя под которым на стороне сервера можно будет получить значение. $_POST[‘checks’] будет содержать JSON данные.
rean1mator, для этого мы все тут и собрались 🙂 Пожалуйста 🙂
Получилось передасть JSON-строку в PHP, но вот в обратную сторону когда передаю, то не получается в JS строку преобразовать в массив JS.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
$(document).ready(function() { $('#какой-то id').on('click', function() { var checks = new Array(); $("input[name='ls_id']:checked").each(function() { checks.push($(this).val()); }); var data=JSON.stringify(checks); $.ajax({ type: 'POST', url: "какой-то url", dataType: 'json', cache: false, data: {checks: data, func: 9}, success: function(data) { var newarr = $.parseJSON(data); alert(newarr); } }); }); });
if (isset($_POST['checks'])) { $php_json = json_decode($_POST['checks'], TRUE); $php_arr = array ('id'=>45, 'uid'=>168752145, 'name'=>'Крендель'); $js_json = json_encode($php_arr); echo $js_json; }
В $php_json после декодирования попадает норм php-массив.
$php_arr — вручную создал тестовый массив и кинул его в json_encode($php_arr);
В итоге в JS в data прилетает Object . А когда data попадает в
var newarr = $.parseJSON(data);
то в newarr прилетает null, а alert() соответственно выдает пустоту
Добавлено через 1 час 14 минут
Пробовал передать в json_encode() разные массивы: ассоциативные, без указания ключей (автоинкрементный ключ), брал значения в разные кавычки, но всё равно в JS результат получатся одинаковый, хотя json_encode() при подаче разного типа массивов конвертирует их поразному
Добавлено через 45 минут
Сделал ещё один «финт ушами».
JS передал данные json-м в php, там прилетевшие данные попадают в json_decode(), потом я резльтат json_decode() кидаю в json_encode() и бросаю обратно. В JS так же загоняю прилетевшие данные в $.parseJSON(). При таком раскладе он даже не захоидит в sucsess, а соответственно, не выполняет действия там((
Как передать HTML объект аяксом в php-скрипт?
Я хочу передать методом POST php-обработчику HTML-страничку целиком. Начиная от
и заканчивая