Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2016, 16:30
Новичок на форуме
Отправить личное сообщение для dztop Посмотреть профиль Найти все сообщения от dztop
 
Регистрация: 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']) значение, но из вне функции (...тут)

Не судите строго, решение очень необходимо.
Заранее спасибо всем!!!
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2016, 16:35
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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);
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2016, 16:46
Новичок на форуме
Отправить личное сообщение для dztop Посмотреть профиль Найти все сообщения от dztop
 
Регистрация: 14.11.2016
Сообщений: 5

Выдает окно: undefined
И если можно, поясните как в общем получить доступ к массиву data из вне.
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2016, 16:49
Новичок на форуме
Отправить личное сообщение для dztop Посмотреть профиль Найти все сообщения от dztop
 
Регистрация: 14.11.2016
Сообщений: 5

Dilettante_Pro,
Выдает окно: undefined
И если можно, поясните как в общем получить доступ к массиву data из вне.
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2016, 17:22
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

Сообщение от dztop Посмотреть сообщение
Dilettante_Pro,
Выдает окно: undefined
И если можно, поясните как в общем получить доступ к массиву data из вне.
до внесения изменений что выдавал?
всё выделенное жирным шрифтом вписал?

data в целом - точно так же, через внешнюю глобальную переменную
Да, еще - ajax - асинхронный запрос, поэтому данные вовне функции появятся не сразу.

попробуй
setTimeout(alert(here),2000);
(задержку подобрать)
или в onAjaxSuccess сгенерить какое-нибудь событие, по которому смотреть результат

Последний раз редактировалось Dilettante_Pro, 14.11.2016 в 17:27.
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2016, 17:26
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Никак.
Код "извне" отрабатывает сразу "прям сейчас", функция onAjaxSuccess, принимающая данные срабатывает "потом", когда сервер ответит и данные придут.
Разбивайте код логически на функции, и по цепочке вызывайте функции из функций по мере надобности.
__________________
29375, 35
Ответить с цитированием
  #7 (permalink)  
Старый 14.11.2016, 18:14
Новичок на форуме
Отправить личное сообщение для dztop Посмотреть профиль Найти все сообщения от dztop
 
Регистрация: 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'] )

Только нужно было выключить асинхронный запрос
Ответить с цитированием
  #8 (permalink)  
Старый 14.11.2016, 18:14
Новичок на форуме
Отправить личное сообщение для dztop Посмотреть профиль Найти все сообщения от dztop
 
Регистрация: 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'] )

Только нужно было выключить асинхронный запрос
Ответить с цитированием
  #9 (permalink)  
Старый 14.11.2016, 19:39
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,577

Только так делать нельзя, потому что вся страница висит пока идёт запрос, а та да.
__________________
29375, 35
Ответить с цитированием
  #10 (permalink)  
Старый 15.11.2016, 16:00
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как правильно получить данные из "специфического" jsonp-файла? Zaxap Общие вопросы Javascript 4 02.11.2016 15:50
Как получить значение из сторонней функции? Poveritov Общие вопросы Javascript 3 14.09.2016 15:42
Как лучше всего добавлять на страницу данные, пришедшие в json? ogurchik AJAX и COMET 7 08.10.2015 15:01
как передать данные из json в названия параметров shultz1988 Общие вопросы Javascript 2 20.07.2011 11:15
Как правильно получить введенные данные в поле? buket jQuery 11 11.04.2010 19:59