$.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, время: 08:20. |