ilhomelv Ответов: 2

Как получить доступ к переменной ответа из внешних функций в том же файле


<pre>
var json="";
var xrequest = new XMLHttpRequest();
xrequest.open('GET', 'videos.json', true);
xrequest.onload = function(){
	if(this.status == 200) {
		var json = JSON.parse(this.responseText);
		for(var i=0; i<json.length; i++) {
			console.log(json[i].url);
		}
		console.log(json + ' 1');
	}
}
xrequest.send(null);

console.log(json);


Что я уже пробовал:

этот код считывается из файла json, и ответ присваивается var json, а затем я хочу получить доступ к json извне функции,

глобальный var json="";
я предполагаю, что этот var json присваивается объекту json.parse,
приставка журналы печатает, что VAR JSON для успешного назначения объекта JSON ответ.разобрать,

однако теперь я пытаюсь манипулировать им вне объекта xmlhttprequest, но он ничего не возвращает, почему ответ json не появился вне объекта xmlhttprequest,

как я могу получить доступ к объектному ответу вне функции??? пожалуйста, СОС, помогите

2 Ответов

Рейтинг:
2

ZurdoDev

Причина, по которой вы не можете получить к нему доступ, заключается в том, что внутри функции он также говорит

var json =

это означает, что он объявляет новую переменную с именем json. Просто удалите var, и он будет назначен глобальной переменной json.


ilhomelv

спасибо Вам за ваш ответ, но я тоже попробовал это сделать, без var, объявленного внутри объекта ответа, однако это тоже не сработало, ((

которые отсылают обратно неопределенными

ZurdoDev

Тогда вам придется его отладить. Возможно, ваша страница публикуется обратно, поэтому js перезагружается. Я не знаю, не будучи в состоянии видеть, как это происходит.

ilhomelv

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

ZurdoDev

Мы делаем это постоянно. Не знаю, почему ты не можешь заставить его работать. Но это нечто специфическое для того, что вы делаете.

ilhomelv

я передал его внутри call (), и это работает, но когда я пытаюсь назначить его глобально объявленной переменной, она продолжает печатать неопределенную, я проверил о подъеме, может быть, переменная поднята, ((((

ilhomelv

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

ZurdoDev

Все, что вам нужно сделать, это удалить var, чтобы он не был объявлен снова. Возможно, было бы проще отслеживать это, если бы вы дали ему другое имя переменной. Я не могу сказать вам, почему это не работает для вас, потому что я не могу запустить ваш код.

Рейтинг:
2

Richard Deeming

Цитата:
xrequest.send(null);
console.log(json);

То Запросы XMLHttpRequest.отправить()[^] метод возвращает немедленно Он не ждет, пока будет получен ответ.

То json переменная не назначается до тех пор, пока не будет получен ответ. Таким образом, json переменная все еще есть undefined в вашем призыве к console.log.

Тебе нужно переосмыслить то, что ты делаешь.


ilhomelv

спасибо, я переосмыслю и получу решение, просто по обратному вызову(jsondata) это работает ))
но я подумывал о том, чтобы присвоить var глобальному var Soom, как это может быть