Json удаляет как исправить?
Всем привет , помогите решить проблемку.
Есть php который генерирует json
<?php $update_tpl = '<tr id="upd_{num}"> <td>{num}</td> <td><div class="btn btn-green" onclick="text('{base64}', '{num}')"><center>Подробнее</center></div></td> <td>{filepath}</td> <td>{filename}</td> <td>{date}</td> <td>Отсутствует</td> <td id="btn_{num}"><button class="btn btn-green" onclick="return install('{filepath}', '{filename}', '{num}', '0', 'Отсутствует')">Установить</button></td> <td></td> </tr> <!-- <div class="btn btn-red" style="width: 170px">Установлена</div> --> <script type btn-green" onclick=" } else if(data['upd'] == 1 && data['status'] == 1) $('#upd_{num}').remove(); }); </script>'; $updates = array( array( 'filepath' => 'domen/update/update_10.09.2021.zip', 'num' => '25', 'filename' => 'update_10.09.2021.zip', 'date' => '31.05.2020 - 13:09', 'base64' => base64_encode('Сообщение!'), ) ); $result = ''; foreach($updates as $update) { $result .= str_replace(array_map(function($el) { return '{' . $el . '}'; }, array_keys($update)), array_values($update), $update_tpl); } file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/new_update.json', json_encode(array('html' => $result))); |
<?php $update_tpl = '<tr id="upd_{num}"> <td>{num}</td> <td><div class="btn btn-green" onclick="text('{base64}', '{num}')"><center>Подробнее</center></div></td> <td>{filepath}</td> <td>{filename}</td> <td>{date}</td> <td>Отсутствует</td> <td id="btn_{num}"><button class="btn btn-green" onclick="return install('{filepath}', '{filename}', '{num}', '0', 'Отсутствует')">Установить</button></td> <td></td> </tr> <!-- <div class="btn btn-red" style="width: 170px">Установлена</div> --> <script type btn-green" onclick=" } else if(data['upd'] == 1 && data['status'] == 1) $('#upd_{num}').remove(); }); </script>'; $updates = array( array( 'filepath' => 'domen/update/update_10.09.2021.zip', 'num' => '25', 'filename' => 'update_10.09.2021.zip', 'date' => '31.05.2020 - 13:09', 'base64' => base64_encode('Сообщение!'), ) ); $result = ''; foreach($updates as $update) { $result .= str_replace(array_map(function($el) { return '{' . $el . '}'; }, array_keys($update)), array_values($update), $update_tpl); } file_put_contents($_SERVER['DOCUMENT_ROOT'] . '/new_update.json', json_encode(array('html' => $result)));
но при создании json
не генерируются
<script type="text/javascript"> $.getJSON(home+'update/id/25', function(data){ if(data['upd'] == 1 && data['status'] == 0){ $('#upd_25').appendTo('#update_install'); $('#btn_25').html('<div class="btn btn-green" onclick="return install('domen/update/update_10.09.2021.zip', 'update_10.09.2021.zip', '25', ' 0 ', 'Отсутствует')" style="width: 105px;"> авыавы </div> '); } else if(data['upd'] == 1 && data['status'] == 1) $('#upd_25').remove(); }); </script> |
<script type="text/javascript"> $.getJSON(home+'update/id/25', function(data){ if(data['upd'] == 1 && data['status'] == 0){ $('#upd_25').appendTo('#update_install'); $('#btn_25').html('<div class="btn btn-green" onclick="return install('domen/update/update_10.09.2021.zip', 'update_10.09.2021.zip', '25', ' 0 ', 'Отсутствует')" style="width: 105px;"> авыавы </div> '); } else if(data['upd'] == 1 && data['status'] == 1) $('#upd_25').remove(); }); </script>
правильная генерация должна быть так с
$('#btn_21').html('<div class="btn btn-green" onclick="return install('domen/update/update_10.09.2021.zip', 'update_10.09.2021.zip', '21', '0', 'Отсутствует')" style="width: 105px;"> авыавы </div>'); |
$('#btn_21').html('<div class="btn btn-green" onclick="return install('domen/update/update_10.09.2021.zip', 'update_10.09.2021.zip', '21', '0', 'Отсутствует')" style="width: 105px;"> авыавы </div>');
Дополнительно:
Так может стоит экранировать так необходимый символ?
Сравните:
$x = '-- ' --'; print $x . "n"; // -- ' -- $y = '-- \' --'; print $y . "n"; // -- ' -- |
$x = '-- ' --'; print $x . "n"; // -- ' -- $y = '-- \' --'; print $y . "n"; // -- ' --
To specify a literal single quote, escape it with a backslash (). To specify a literal backslash, double it (\).
https://www.php.net/manual/en/language.types.strin...
Ответы:
Зачем собственно html разметку в json переводить?
Что заставило вас использовать собственный велосипед вместо обычного json_encode?
Тем более не вижу у вас в коде никакого экранирования, сломать это крайне легко даже случайно.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы удалить JSON объект в PHP, вам нужно использовать функцию unset(). Например, если у вас есть переменная $json, содержащая JSON объект, и вы хотите его удалить, вы можете сделать следующее:
$json = '{"name": "John", "age": 30}'; $decoded_json = json_decode($json); unset($decoded_json); echo "JSON объект удален";
Этот код сначала декодирует JSON объект в массив с помощью функции json_decode(), а затем использует функцию unset() для удаления этого массива. После этого вы получите сообщение "JSON объект удален".
Если у вас есть JSON объект в виде строки, то вы можете сразу декодировать его и удалить, используя следующий код:
$json = '{"name": "John", "age": 30}'; $decoded_json = json_decode($json); unset($decoded_json); echo "JSON объект удален";
Помните, что после удаления JSON объекта вы больше не сможете обращаться к его свойствам или использовать его значения в коде.