izbushka

izbushka
Рейтинг
110
Регистрация
08.06.2007

Это ужас..


function loadData4(vbz){
$.ajax
({
type: "POST",
url: "/index_mail.php",
data: {vbz : vbz},
success: function(msg)
{
$("#blokajax4").html(msg);
}
});

}

function loadData2(page){
$.ajax
({
type: "POST",
url: "/file/info2.php",
data: {page : page},
success: function(msg)
{
$("#blokajax2").ajaxComplete(function(event, request, settings)
{
$("#blokajax2").html(msg);
var vbz='Чего там надо';
loadData4(vbz);
});
}
});

}
postavkin:


function loadData2(page){
$.ajax
({
type: "POST",
url: "/file/info2.php",
data: {page : page},
success: function(msg)
{
$("#blokajax2").ajaxComplete(function(event, request, settings)
{
$("#blokajax2").html(msg);
$("#blokajax4").html('форма отправки письма');
});
}
});

}

Файл info2.php подгружается аяксом, в нем есть <div id="blokajax4"></div>

Вместо строки $("#blokajax4").html('форма отправки письма'); делаете еще один ajax запрос, в success функции которого пишете эту строку

postavkin:
Я думаю для спеца код вполне простой, просто нужно чтобы у спеца было 5 минут времени мне помочь. Спасибо.

Я ж вам сказал:

loadData4(''); поместить после $("#blokajax2").html(msg); в функции loadData2.

А $('#blokajax4 .pagination2 .active2').... после $("#blokajax4").html(msg); в loadData4.

Может поломаться первая страница (которая уже с blokajax4), нужно знать всю логику чтоб сказать точно.

postavkin:
В страницу текст "форма отправки письма" выводит.

Понимаете, даже если ajax успевает выполниться к моменту обращения к нужному элементу, все-равно это просто не правильно на это расчитывать.

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

Смотрите консоль ошибок броузера, там будет сказано что не так.

postavkin:
форма не подгружается во втором варианте.
В первом и форма подгружается и срабатывает клик по кнопке "отправить".

Проблема в том что вы выполняете действия над элементами которых нет в DOM. Как решить - написал выше.

---------- Добавлено 19.09.2013 в 12:27 ----------

postavkin:
Сперва loadData2, а затем loadData4, а соответственно после полной подгрузки 2-й, уже и есть див для 4-й. Как то так.

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

loadData2(PageName);
var vbz='';
loadData4(vbz);

Вы думаете что тут loadData4(vbz) выполнится после загрузки данных в loadData2, а на самом деле, они выполнятся практически одновременно, не дожидаясь данных.

Надо засунуть loadData4 в success от loadData2

postavkin:

loadData4(vbz);
$('#blokajax4 .pagination2 .active2')...

Дело в том, что селектор $('#blokajax4... не сработает, т.к. элемента #blokajax4 еще нет в DOM. Он появится только после успешно выполнения loadData2(PageName);.

Вам нужно выполянять функцию по этому селектору в success: блоке запроса ajax

kgtu5:
на vps переезжайте, смена хостинга ничего не даст...

О да, человек не может найти проблему в своих сайтах, а вы хотите чтоб он с сервером разобрался. Если проблема есть, она никуда не денется и на vps

Там не радио кнопки, а стилизированные дивы. можете сразу делать div'ами, можете с помощью JS превращать checkbox-ы в див-ы.

Ну и функицию изменения стиля на событие onClick повесить

admak:
не понятен глубинный смысл этих действий

Его нет.

admak:
сначала implode, а потом натягиваем шаблон

Да, такой вариант подходит

Более красивые идеи? :)

Chukcha:
array_walk

Она не возвращает массив, но идея ясна.

admak:
array_map

Работает, но использует пользовательскую функцию в качестве колбека :)

можно, конечно, сделать ее анонимной:

implode(', ', array_map( function ($x) {return('tt ='.$x.' ff='.$x); },$a));

но все же можно ли ее избежать совсем?

Всего: 904