Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   $.get("name.txt, function(data1){}) (https://javascript.ru/forum/events/29095-%24-get-name-txt-function-data1-%7B%7D.html)

Махач 14.06.2012 17:31

$.get("name.txt, function(data1){})
 
Доброго времени суток!

Написал тут:
frame = new RegExp("" + codec + vendor + scene + "+([0-9]+,?[0-9]+)");
$.get("name.txt", function(data1){
			var resultfr = data1.match(frame);
			if (resultfr == null) {
				$("div #kadr span").text("Фиг");
			}
			else 
			{
				$("div #kadr span").text(resultfr[1]);
			};
		});
Как теперь вывести resultfr[1], чтобы работать можно было с ним вне этой функции.

melky 14.06.2012 18:37

Держите косячок - http://javascript.ru/forum/174893-post67.html
Осторожно! Может вызвать головную боль.


ЗЫ до сих пор не работает внутреннее линкование.

Махач 14.06.2012 19:36

Под конец дня, я что-то плохо соображаю, к тому же только начал изучасть JS.

То, что я написал отрабатывает корректно.
У меня есть серия select'ов, пользаватель выбирает нужные ему значения.
Например он выбрал значения в трёх селектах, js соответсвенно отловил изменения значений (codec , vendor , scene). В файле name.txt есть строки состоящие из "codec + vendor + scene + [некий параметр]". В <div> я вывожу именно этот параметр (динамически). Всё работает.

У меня 3 файла txt, по которым проходит поиск разных совпадений, тоесть:
1) codec + vendor + scene + [некий параметр1] поиск в name1.txt
2) sect + stage + [некий параметр2] поиск в name2.txt
3) res + svd + [некий параметр3] поиск в name3.txt

Нужно связать [некий параметр1] [некий параметр2] [некий параметр3] в одной формуле и вывести результат в другой div.
var a = "глобальная", b = "тоже"
frame = new RegExp("" + codec + vendor + scene + "+([0-9]+,?[0-9]+)");
$.get("name1.txt", function(data1){
			var resultfr = data1.match(frame);
			$("div #kadr span").text(resultfr[1]);
			a = resultfr[1];
		});
frame2 = new RegExp("" +  sect + stage + "+([0-9])");
$.get("name2.txt", function(data2){
			var resultre = data2.match(frame2);
			$("div #pot span").text(resultre[1]);
			b = resultre[1];
		});
var itog = a + b;

Не работает itog, а вот в дивы всё прекрасно пишется. (

melky 14.06.2012 22:16

Ещё раз перечитайте мой пост в FAQ.

Вкратце. Код, использующий результаты запроса :
Цитата:

Сообщение от Махач
var itog = a + b;

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

Махач 14.06.2012 23:40

Постараюсь осознать )

Махач 15.06.2012 18:49

Подскажите пожалуйста, а и b - undefined. Разве не должен ли он поменять значения a и b?
frame = new RegExp("" + codec + vendor + scene + "+([0-9]+,?[0-9]+)");
resolution = new RegExp("" + res + "+\\s+([0-9]+,?([0-9]+)?)+\\s");
		$.ajax({
				url: 'frame.txt',
				method: 'GET',
				success: function(data){
					handle1(data);
				}});
		$.ajax({
				url: 'resolution.txt',
				method: 'GET',
				success: function(data){
					handle2(data);
				}});
		var a;
		var handle1 = function(data){
			var resultfr = data.match(frame);
			if (resultfr == null) { $("div #kadr span").text("Фиг"); }
			else { $("div #kadr span").text(resultfr[1]); };
			a = resultfr[1];
		};
		var b;
		var handle2 = function(data){
			var resultre = data.match(resolution);
			if (resultre == null) { $("div #resollution span").text("Фиг"); }
			else { $("div #resollution span").text(resultre[1]); };
			b = resultre[1];
		};
		$("div #mas").text("КАДР: "+a+" РАЗРЕШЕНИЕ: "+b);

melky 15.06.2012 18:57

те же яйца, только сбоку. значение устанавливается после завершения запроса, а вы его используете сразу, до того, как они пришли.

используйте Deferred

Махач 18.06.2012 11:21

А так правильно? Отрабатывает корректно.
frame = new RegExp("" + codec + vendor + scene + "+([0-9]+,?[0-9]+)");
		resolution = new RegExp("" + res + "+\\s+([0-9]+,?([0-9]+)?)+\\s");
		
		$.when( $.ajax("frame.txt"), $.ajax("resolution.txt")).done(function(frameaj, resaj){
			var frametext = frameaj[2];
			var resultfr = frametext.responseText.match(frame);
			if (resultfr == null) { $("div #kadr span").text("Фиг"); }
			else { $("div #kadr span").text(resultfr[1]); };
			var restext = resaj[2];
			var resultre = restext.responseText.match(resolution);
			if (resultre == null) { $("div #resollution span").text("Фиг"); }
			else { $("div #resollution span").text(resultre[1]); };
			$("div #mas").text("КАДР: "+resultfr[1]+" РАЗРЕШЕНИЕ: "+resultre[1]);
   			} );

melky 18.06.2012 11:27

да, это самое оно.

Махач 18.06.2012 11:32

Спасибо большое.


Часовой пояс GMT +3, время: 11:59.