берем, проверяем, выводим.
вот мой код
HTML страницы с которой выполняется скрипт <div id="div_1"></div> <div id="div_body"></div> HTML страницы с которой происходит загрузка <div id="div_value"></div> сам скрипт function checkme() { $(#div_1).load('page.php #div_value'); var ck_value = $(#div_1).text(); if (ck_value == "") { $("#div_body").load('error.php'); } else { $("#div_body").load('ok.php'); } } суть работы - эта функция загружает в саму страницу с которой делается скрипт, заданный див с другой страницы, а потом идет проверка если ниче нету то ошибка , если чтото есть то ОК вопрос заключается в том что проверка не работает, почему? профессионалы помогите мне пожалуйста :yes: и вот заодно напишу пару вопросов когда происходит заргузка данного дива то это выглядит вот так <div id="div_1"><div id="div_value">12345</div></div> как сделать чтобы только сам див (div_value) не загружался а только что внутри него вот в этой строчке $(#div_1).load('page.php #div_value'); если дописать .text() тоесть так $(#div_1).load('page.php #div_value').text(); что это дает, и вообще надо ли, может из-за этого не сравнивает?! далее вот эти дивы <div id="div_1"></div> <div id="div_body"></div> я записал в саму страницу тоесть они уже там присутствуют, а как сделать так чтобы они добавлялись самим яваСкриптом, тоесть в html не прописывать, а вставлять в хтмл при выполнении функции, вроде знаю что так можно ответьте пожалуйста на мои вопросы умники и умницы |
всегда ставь JS в BB-теги
на странице такой же скрипт? если да, то смотри внимательней $(*!*#div_1*/!*).load('page.php #div_value'); var ck_value = $(*!*#div_1*/!*).text(); if (ck_value == "") { $("#div_body").load('error.php'); } else { $("#div_body").load('ok.php'); } } строки должны быть заключены в кавычки :) ошибок на странице не возникает? window.onerror = function(){alert('err')} |
это тут опечатка , а на странице в кавычках, так что скажешь по поводу моих вопросов?)
|
Цитата:
Цитата:
обработай входные данные или убери вывод этого дива. насчет первого , вместо $("#div_1").load('page.php #div_value'); пиши $("#div_1").load('page.php #div_value', *!*function(data){this.innerHTML=data.replace(/<.+>(.*)<.+>/,"$1")}*/!*); или это *!*$("#div_1").html(*/!* $("#div_1").load('page.php #div_value').text() *!*)*/!* Цитата:
если неясно - спустись вниз до примеров, там станет ясно Цитата:
|
Цитата:
|
melky
var ck_value = $(#div_1).text();вот смотри здесь зачем нужен text() чтобы потом можно было сравнивать верно? а вот здесь я не знаю нужен он или нет вроде пробовал и так и так и ниче незнаю че делается в итоге $("#div_1").load('page.php #div_value').text() я конечно понимаю возможно это наглость, но пожалуйста разъясняй мне подробнее чтобы я понимал и учился в дальнейшем |
Цитата:
$("#div_1").html( $("#div_1").load('page.php #div_value').text() ) можно расписать как // загрузит с тегом DIV и вернет текст (уже без DIV ) // т.е. просто 12345 var newText = $("#div_1").load('page.php #div_value').text(); // записывает этот текст в дивчик $("#div_1").html( newText ) первый пример почти такой же, только там используется callback (ф-я, исполняющаяся после выполнения запроса). подробнее - в документации |
ok следуем дальше, вообщем функция не распознает , может это потомучто не успевает? я просто смотрел через дебаггер там все встраивается в страницу, но загружает всегда
$("#div_body").load('error.php');этот код, мне кажется не успевает чтоли или я неззнаю че тут неправильно да и всетаки скажи вот здесь нужен текст код? $("#div_1").load('page.php #div_value').text(); потомучто работает и так и так вроде и дак какой пример лучше использовать там где ты говоришь колбек или второй и в чем разница между ними |
для понимания кода легче написать без колбека. ну, для меня, по крайней мере.
я не помню, или не соображаю уже, но load - это асинхронный или синхронный AJAX? поставь так вокруг $("#div_1").html( $("#div_1").load('page.php #div_value').text() ) и смотри в сообщения консоли console.log("LOADING started") $("#div_1").html( $("#div_1").load('page.php #div_value',function(){console.log("LOADING was ASYNC")}).text() ); console.log("LOADING was sync."); и запусти еще раз если после сообщения "LOADING started" идет "LOADING was ASYNC", то делай этот запрос синхронно, через $.ajax(). похожу запрос асинхронный, и данные не приходят,когда скрипт выполняется дальше, тем самым рушится вся логика |
идет вот так
LOADING started LOADING was sync. LOADING was ASYNC а код всетаки грузит так оба дива <div id="div_1"><div id="div_value">12345</div></div> это потомучто лоад асинхронный да? |
да
перепиши этот кусок через $.ajax. поставь там async : false |
сделал, заработало, я немного почитал и написано что синххронный запрос лучше не использовать так как браузер зависает пока ждет ответ в 99 процентов из 100 можно сделать асинхронно
это так? и вот что хотел узнать , если страница с которой получает значение мой скрипт, весит 100КБ - он на самом деле то всю страницу прогружает себе в память? так как это значение можно получить еще со сотаницы которая весит 30 кбайт или он только загружает див? скажи как лучше и есть ли разница что див со значением вверху страницы и внизу |
да, прогружает. но на время, пока сборщик мусора не придет. когда он приходит? написано почти в каждом учебнике.
грузит он всю страницу, потом выбирает оттуда #div, который указан, и возвращает как DATA разницы нет, т.к. разбор данных начинается после полной загрузки страницы. используй колбеки, одним словом, если не хочешь синхронно. тут я описал его чуть-чуть |
разве нет разницы сколько ему грузить каждый раз 30 или 100 килобайт?
так ты скажи синхронно использовать это не этично? скажи как будет грамотнее какие последствия синхронного использования, ведь дефолтно асинхронно (Local Event) и (Global Event) в чем разница? |
синхронно использовать - замораживать интерфейс. создается ощущение тормозов.
не знаю |
Спасибо melky :thanks:
самый отзывчивый человек (по мне), ;) |
Парни подскажите, вот я получил некоторую информацию и начал тестировать
вот что скажу если использовать режим синхронный function checkme() { $('#div_1').html( $('#div_1').load('page.php #div_value').text() ); var ck_value = $('#div_1').text(); if (ck_value == "") { $("#div_body").load('error.php'); } else { $("#div_body").load('ok.php'); } } то в div_1 загружается только значение со страницы page.php из div_value и все окей, но страница имитирует лаг прочитал что синхронный режим используют нубы т.к. это старье и в 99 процентов можно использовать асинхронный ---------------------далее я использую асинхронный режим и что я вижу ну во первых в div_1 вставляется не только значение, но и div_value который его собственно и окружает СВЕРЕНИЕ ЗНАЧЕНИЙ работает некорректно то error.php выскакивает то ok.php мне тут подсказывали насчет таймеров всяких я подставил тайминг и соответственно error.php и ok.php стало работать правильно, всмысле в тех ситуациях в которых они и должны появляться, НО если интернет загружен то соответственно какойто бред получается, опять то эррор то ок я так понимаю это из-за того чтоне успевает чтоли проверять, я заметил это из-за того что поставив таймер както стало различаться значения вообщем что хочу спросить, почему когда синхронный запрос, то он как дядя петя пока не получит значение не выведет то что нужно приказать при этих значениях, а если асинхронно то ему наплевать как стрекозе наташе, что нужно сделать , ведь вы про, вы знаете еще какие коды можно применить, ведь тайминг может это бред и можно как то сделать правильно чтобы все работало И ВОТ ЧТО ЕЩЕ смотрите на этот код $('#div_1').html( $('#div_1').load('page.php #div_value').text() ); расшифровка, в div_1 загрузить с такой то страницы такое то див тут еще стоит код .html он вроде должен сделать так если <div id="div_1">ВЫВОД_ЗНАЧЕНИЯ</div> - да так он делает если синхронно <div id="div_1"><div id="div_value">ВЫВОД_ЗНАЧЕНИЯ</div></div> - а так он загружает если асинхронный, блин как сделать чтобы <div id="div_value"></div> не загружался И ЕЩЕ ВОПРОС опять же код $('#div_1').html( $('#div_1').load('page.php #div_value').text() ); если сделать так $('body').load('page.php #div_value').text(); то он все что в боди очищает я что хочу узнать , А НЕЛЬЗЯ СДЕЛАТЬ ЧТОБЫ ЭТО ДОБАВЛЯЛОСЬ В СТРАНИЦУ ВНУТРЬ ТЕГА БОДИ а то надо создавать див , указывать что в этот див загружать, для меня удобне чтобы просто в боди записывался вроде пока все)) |
могу только посоветовать взять в руки debugger и отлаживать код.
кроме вас самих, лучше никто помочь не сможет :) удачи |
melky ты ведь компитентен в том что я написал , разъясни мне пожалуйста :blink:
|
Цитата:
где ты это прочитал? Цитата:
Цитата:
а бабочка наташа асинхронна, она умеет делать два дела одновременно : делает дела синхронного алкаша дяди вани и свои , асинхронные, дела. нихрена не понятно самому :D короче, синхронность-заморозка, асинхронность-события и их обработчики (колбеки) Цитата:
у меня файл ajax.php, в котором <div id="div_value">123</div> на странице такой HTML <div id="div_1"></div> <div id="div_body"></div> и такой скрипт $('#div_1').load('ajax.php #div_value', function(a){ console.log("пришло : "+a) a=a.replace(/<.+>(.*)<.+>/,"$1") console.log("стало : "+a) console.log( "Мы будем загружать : "+(a.length ? "OK.php":"error.php") ) }) вывод Код:
пришло : <div id="div_value">123</div> function checkme() { $('#div_1').load('ajax.php #div_value', function(a){ $('#div_1').text( (a=a.replace(/<.+>(.*)<.+>/,"$1")) ) $("#div_body").load( a.length ? "ok.php":"error.php" ) }) } |
постоянно ok.php (опятьже видимо потомучто не успевает проверить)
|
а вывод что пишет в консоль?
|
Часовой пояс GMT +3, время: 02:24. |