$.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], чтобы работать можно было с ним вне этой функции. |
Держите косячок - http://javascript.ru/forum/174893-post67.html
Осторожно! Может вызвать головную боль. ЗЫ до сих пор не работает внутреннее линкование. |
Под конец дня, я что-то плохо соображаю, к тому же только начал изучасть 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, а вот в дивы всё прекрасно пишется. ( |
Ещё раз перечитайте мой пост в FAQ.
Вкратце. Код, использующий результаты запроса : Цитата:
|
Постараюсь осознать )
|
Подскажите пожалуйста, а и 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);
|
те же яйца, только сбоку. значение устанавливается после завершения запроса, а вы его используете сразу, до того, как они пришли.
используйте Deferred |
А так правильно? Отрабатывает корректно.
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]);
} );
|
да, это самое оно.
|
Спасибо большое.
|
| Часовой пояс GMT +3, время: 05:38. |