Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   берем, проверяем, выводим. (https://javascript.ru/forum/jquery/18317-berem-proveryaem-vyvodim.html)

jayson 26.06.2011 00:25

берем, проверяем, выводим.
 
вот мой код

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 не прописывать, а вставлять в хтмл при выполнении функции, вроде знаю что так можно

ответьте пожалуйста на мои вопросы умники и умницы

melky 26.06.2011 00:41

всегда ставь 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')}

jayson 26.06.2011 01:31

это тут опечатка , а на странице в кавычках, так что скажешь по поводу моих вопросов?)

melky 26.06.2011 02:04

Цитата:

Сообщение от jayson (Сообщение 110514)
вот мой код

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');
}
}

Цитата:

Сообщение от jayson (Сообщение 110514)
когда происходит заргузка данного дива то это выглядит вот так
<div id="div_1"><div id="div_value">12345</div></div>

как сделать чтобы только сам див (div_value) не загружался а только что внутри него


обработай входные данные или убери вывод этого дива.

насчет первого ,

вместо
$("#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()   *!*)*/!*


Цитата:

Сообщение от jayson (Сообщение 110514)
вот в этой строчке $(#div_1).load('page.php #div_value'); если дописать .text()
тоесть так $(#div_1).load('page.php #div_value').text();
что это дает, и вообще надо ли, может из-за этого не сравнивает?!

смотри на сайте документации $.text()
если неясно - спустись вниз до примеров, там станет ясно

Цитата:

Сообщение от jayson (Сообщение 110514)
далее вот эти дивы
<div id="div_1"></div>
<div id="div_body"></div>

я записал в саму страницу тоесть они уже там присутствуют, а как сделать так чтобы они добавлялись самим яваСкриптом, тоесть в html не прописывать, а вставлять в хтмл при выполнении функции, вроде знаю что так можно

можно, читай документацию на русском

jayson 26.06.2011 02:20

Цитата:

пиши

$("#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() )
прокомментируй пожалуйста что эти коды делают чтобы я понимал

jayson 26.06.2011 02:25

melky
var ck_value = $(#div_1).text();
вот смотри здесь зачем нужен text() чтобы потом можно было сравнивать верно?




а вот здесь я не знаю нужен он или нет вроде пробовал и так и так и ниче незнаю че делается в итоге
$("#div_1").load('page.php #div_value').text()



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

melky 26.06.2011 02:27

Цитата:

Сообщение от jayson (Сообщение 110525)
прокомментируй пожалуйста что эти коды делают чтобы я понимал

$("#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 (ф-я, исполняющаяся после выполнения запроса). подробнее - в документации

jayson 26.06.2011 02:35

ok следуем дальше, вообщем функция не распознает , может это потомучто не успевает? я просто смотрел через дебаггер там все встраивается в страницу, но загружает всегда
$("#div_body").load('error.php');
этот код, мне кажется не успевает чтоли или я неззнаю че тут неправильно

да и всетаки скажи вот здесь нужен текст код?


$("#div_1").load('page.php #div_value').text();
потомучто работает и так и так вроде


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

melky 26.06.2011 02:58

для понимания кода легче написать без колбека. ну, для меня, по крайней мере.

я не помню, или не соображаю уже, но 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().

похожу запрос асинхронный, и данные не приходят,когда скрипт выполняется дальше, тем самым рушится вся логика

jayson 26.06.2011 03:39

идет вот так

LOADING started
LOADING was sync.
LOADING was ASYNC



а код всетаки грузит так оба дива
<div id="div_1"><div id="div_value">12345</div></div>

это потомучто лоад асинхронный да?


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