Как передать через Ajax многострочный параметр
Третий день бьюсь с проблемой передачи многострочного параметра через Ajax+JQuery
HTML
<textarea id="test"></textarea> //пробовал DIV
JS
$.ajax({
type: "POST",
url: "/ajax",
dataType: 'json',
cache: false,
data: ds,
complete: function(resp) {
rs = resp.responseJSON;
var dopParams = rs.dop; //массив выражений JQuery
if (dopParams !== undefined) {
for (i = 0; i < dopParams.length; i++) {
console.log((dopParams[i]))
eval(dopParams[i]);
}
}
PHP получаю такой массив и хотел бы в таком же виде отобразить
Array
(
[keys] => Array
(
[0] => Array
(
[dongle_id] => 1065510441
[prog_ver] => 16778245
)
[1] => Array
(
[dongle_id] => 1065509103
[prog_ver] => 16778249
)
)
[type] => keys_list
)
PHP->JS в конце концов возвращаю результат Ajax запроса
$test = nl2br($array); // последние изыскания, без этих команд тоже пробовал
$test = str_replace("\n", "", $test);
$dop[] = '$("#responseQ").html("' .$test .'")';
$response = [
'switch' => $switch,
'dop' => $dop,
];
echo json_encode($response);
Если ответ сформировать в одну строку без форматирования, то работает, но смотреть таким образом массив сложно.
Ответы (2 шт):
нужно сделать чуть по-другому:
С сервера ожидать просто текст
На сервере сформировать данные таким образом:
ob_start(); echo '<pre>'; var_dump($data); echo '</pre>'; $result = ob_get_clean(); echo $result; // возвращаем строку с данными
на js будет просто
$("#test").html(response);
Может кому пригодится. Многострочный текст через ajx/jquery смог передать используя метод .appendTo (дополняю div построчно) и массив из jq команд:
$dop[] = "$('Вставай проклятьем заклейменный').appendTo('#div_output')";
$dop[] = "$('Весь мир голодных и рабов').appendTo('#div_output')";
Правда временно сохраняю значение переменной в файл, а потом построчно считываю. Зато плюс- всегда можно посмотреть что отправлял.
file_put_contents("file_name",print_r($my_var,true));
$dop[] = "$('#div_output').empty()";
$fd = fopen("file_name", 'r');
$PCREpattern = '/\r\n|\r|\n/u'; //удаляю переносы строк
while(!feof($fd)){
$row = fgets($fd);
$str = preg_replace($PCREpattern, '', $row);
$str = str_replace(" ", " ", $str); //заменяю пробелы
$dop[] = '$("$str").appendTo("#div_output")';
}
fclose($fd);