14.11.2016, 16:30
|
Новичок на форуме
|
|
Регистрация: 14.11.2016
Сообщений: 5
|
|
Как получить полученные json данные из вне функции
Есть файл json.php, который генерирует json данные такого вида:
json.php
[{"id":"1","par1":"par1","par2":"par2"},
{"id":"2","par1":"par1","par2":"par2"},
{"id":"3","par1":"par1","par2":"par2"}]
есть файл которые принимает данные и обрабатывает. в данном случае выводит значение json данных
index.
$.post(
"json.php",
onAjaxSuccess
);
function onAjaxSuccess(data){
data = JSON.parse(data);
alert( data[0]['id'] );
}
...тут
Задача состоит в том, как вывести тот же (data[0]['id']) значение, но из вне функции (...тут)
Не судите строго, решение очень необходимо.
Заранее спасибо всем!!!
|
|
14.11.2016, 16:35
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
dztop,
var here;
$.post(
"json.php",
onAjaxSuccess
);
function onAjaxSuccess(data){
data = JSON.parse(data);
here = data[0]['id'];
alert( data[0]['id'] );
}
alert(here);
|
|
14.11.2016, 16:46
|
Новичок на форуме
|
|
Регистрация: 14.11.2016
Сообщений: 5
|
|
Выдает окно: undefined
И если можно, поясните как в общем получить доступ к массиву data из вне.
|
|
14.11.2016, 16:49
|
Новичок на форуме
|
|
Регистрация: 14.11.2016
Сообщений: 5
|
|
Dilettante_Pro,
Выдает окно: undefined
И если можно, поясните как в общем получить доступ к массиву data из вне.
|
|
14.11.2016, 17:22
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Сообщение от dztop
|
Dilettante_Pro,
Выдает окно: undefined
И если можно, поясните как в общем получить доступ к массиву data из вне.
|
до внесения изменений что выдавал?
всё выделенное жирным шрифтом вписал?
data в целом - точно так же, через внешнюю глобальную переменную
Да, еще - ajax - асинхронный запрос, поэтому данные вовне функции появятся не сразу.
попробуй
setTimeout(alert(here),2000);
(задержку подобрать)
или в onAjaxSuccess сгенерить какое-нибудь событие, по которому смотреть результат
Последний раз редактировалось Dilettante_Pro, 14.11.2016 в 17:27.
|
|
14.11.2016, 17:26
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
Никак.
Код "извне" отрабатывает сразу "прям сейчас", функция onAjaxSuccess, принимающая данные срабатывает "потом", когда сервер ответит и данные придут.
Разбивайте код логически на функции, и по цепочке вызывайте функции из функций по мере надобности.
__________________
29375, 35
|
|
14.11.2016, 18:14
|
Новичок на форуме
|
|
Регистрация: 14.11.2016
Сообщений: 5
|
|
Dilettante_Pro спасибо за мысль умную, все оказалось просто:
var dataJson = $.ajax({
url: "json.php",
type: "json",
dataType: "html",
async:false
}
).responseText;
var data = JSON.parse(dataJson);
alert( data[0]['id'] )
Только нужно было выключить асинхронный запрос
|
|
14.11.2016, 18:14
|
Новичок на форуме
|
|
Регистрация: 14.11.2016
Сообщений: 5
|
|
Сообщение от Dilettante_Pro
|
спасибо за мысль умную, все оказалось просто:
var dataJson = $.ajax({
url: "json.php",
type: "json",
dataType: "html",
async:false
}
).responseText;
var data = JSON.parse(dataJson);
alert( data[0]['id'] )
Только нужно было выключить асинхронный запрос
|
спасибо за мысль умную, все оказалось просто:
var dataJson = $.ajax({
url: "json.php",
type: "json",
dataType: "html",
async:false
}
).responseText;
var data = JSON.parse(dataJson);
alert( data[0]['id'] )
Только нужно было выключить асинхронный запрос
|
|
14.11.2016, 19:39
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
Только так делать нельзя, потому что вся страница висит пока идёт запрос, а та да.
__________________
29375, 35
|
|
15.11.2016, 16:00
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
dztop
Представьте, что setTimeout - это асинхронный запрос.
<button>Проверка ответа</button>
<script>
var answer = 'Нет ответа';
setTimeout(onAjaxSuccess, 5000);
function onAjaxSuccess(data) {
data = 'Ответ получен';
answer = data;
document.querySelector('button').click();
};
// тут
document.querySelector('button').onclick = function() {
alert(answer);
};
</script>
|
|
|
|