Как скрыть вывод json
в нижеуказанном коде (или обойти это)? Сейчас echo
выводит содержимое json
на странице. Без вывода echo
консоль выводит
"JSON.parse: unexpected end of data".
<?
$out = json_encode(array(
surname => $surname_php, //присваиваем переменным в объекте,
//который передадим на клиент имена - 'surname' в данном случае
email => $email_php,
...//остальные переменные
));
echo $out;
?>
<script>
...
success: function(data){
data = JSON.parse(data);
$('#surname').val(data['surname']);//собственно data и будет хранить
//переменные в ячейках с именами, присвоенными ранее, в php
}
</script>
допустим файл, который возвращает JSON
называется json.php
, а файл, который запрашивает данные index.html
Проблема вот в чем: если вы убираете echo $out
, то файл json.php
ничего не возвращает, переменная data
становится пустой строкой и JSON.parse
выдает ошибку, потому что пустая строка это не валидный JSON
И решения, которое вы хотите, нет. Вам в любом случае нужно, что бы файл json.php
возвращал какие-то данные. Если к ним можно обратиться через ajax
, то можно обратиться и напрямую через http
.
Как вариант "защиты от дурака", это просто добавить в ajax
данные, либо специальные заголовки
$.ajax({
url,
headers: {
from-ajax: true
}
});
А на сервере проверять, что этот заголовок есть, иначе выводить 404 страницу или вообще ничего не выводить. Но это "защита от дурака", потому что запрос всегда можно подделать
Если я правильно понял суть вопроса, то возможны как минимум 2 варианта
Первый вариант. Сохранить значение в глобальную переменную
var r;
...
success: function(data){
r = JSON.parse(data);;
}
Второй вариант. Использовать jQuery.data() (https://api.jquery.com/data/)
success: function(data){
data = JSON.parse(data);
$('#surname').data('loaded_data', data);
}
Соответственно потом к данным можно будет обратиться вот так
var data = $('#surname').data('loaded_data');
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Debian 8, php 56 по-умолчанию, через докер ставлю версию php 7
Существует проект на YII2, который размещен на хостинге и работает без особых проблемПри развертывании на локальном сервере этого проекта...
использую эту библиотеку, как парсер https://githubcom/Imangazaliev/DiDOM Мне нужно получить расстояние от определенного адреса до ближайшего метро