Помогите, пожалуйста, с ajax - div в подгружаемом файле

P
На сайте с 06.01.2009
Offline
601
670

Здравствуйте.

Код страницы А


некий код меню страницы
...<div id="blokajax4"></div>...

Тут все гут - форма отправки письма подгружается.

Код страницы Б


<div id="blokajax2"></div>

в этой странице непосредственно в коде нет <div id="blokajax4"></div>, но есть в файле info2.php который подключается аяксом. Проблема - тут не загружается форма.

сам ajax


function loadData2(page){
$.ajax
({

type: "POST",
url: "/info2.php",
data: {page : page},
success: function(msg)
{
$("#blokajax2").ajaxComplete(function(event, request, settings)
{
$("#blokajax2").html(msg);

});
}
});


}



function loadData4(vbz){
$.ajax
({
type: "POST",
url: "/sendmail/mail.php",
data: {vbz: vbz},
success: function(msg)
{
$("#blokajax4").ajaxComplete(function(event, request, settings)
{

$("#blokajax4").html(msg);

});
}
});

}


$(document).ready(function(){

loadData2(PageName);

var vbz='';
loadData4(vbz); // For first time page load default results
// нажатие кнопки "отправить"
$('#blokajax4 .pagination2 .active2').live('click',function(){
var vbz = $("#myform").serialize();
loadData4(vbz);
});
});

Вот часть кода из файла info2.php


... echo "<div id=\"blokajax4\"></div>";...
izbushka
На сайте с 08.06.2007
Offline
110
#1
postavkin:

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

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

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

P
На сайте с 06.01.2009
Offline
601
#2
izbushka:
Дело в том, что селектор $('#blokajax4... не сработает, т.к. элемента #blokajax4 еще нет в DOM. Он появится только после успешно выполнения loadData4(vbz);.

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

форма не подгружается во втором варианте.

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

---------- Добавлено 19.09.2013 в 13:24 ----------

Я не силен в этом, но честно говоря надеялся что по порядку функции сработают.

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

izbushka
На сайте с 08.06.2007
Offline
110
#3
postavkin:
форма не подгружается во втором варианте.
В первом и форма подгружается и срабатывает клик по кнопке "отправить".

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

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

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

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

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

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

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

P
На сайте с 06.01.2009
Offline
601
#4

В файл ajax ставил уже после

$("#blokajax2").html(msg);

строку вида - $("#blokajax4").html('форма отправки письма');

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

Так вот уже по разному пробовал - сама форма не выводится.

Вот и не могу понять - как вместо строки, вывести форму. Строка то выводится.



---------- Добавлено 19.09.2013 в 13:30 ----------

izbushka:

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

Да, дума так. Сейчас ещё раз устрою мозговой штурм. ((

izbushka
На сайте с 08.06.2007
Offline
110
#5
postavkin:
В страницу текст "форма отправки письма" выводит.

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

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

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

P
На сайте с 06.01.2009
Offline
601
#6

Понятно, спасибо.

Я же сразу написал - что не силен в этом.

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

в файле ajax сделал, это единственное что приходит в голову


$("#blokajax2").html(msg);
var vbz='';
type: "POST",
url: "формы отправки письма",
data: {vbz: vbz},
success: function(loadData2)
{
$("#blokajax4").ajaxComplete(function(event, request, settings)
{

$("#blokajax4").html(msg);

});
}

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

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

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

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

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

P
На сайте с 06.01.2009
Offline
601
#8
izbushka:
Я ж вам сказал:
loadData4(''); поместить после $("#blokajax2").html(msg); в функции loadData2.

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

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

В таком варианте - вебконсоль браузера показывает постоянную подгрузку /sendmail/mail.php

т.у. функция loadData4 зациклилась.

Ладно - решил сделать вообще по другому, раз с формой такой гемор.

Спасибо большое что уделили время.

Сделаю просто на один див в коде больше и не буду див в див подгружать. Для формы всегда будет в коде.

И все таки если кто то покажет как конкретно код написать - буду рад.

Есть


$("#blokajax2").html(msg);
$("#blokajax4").html('форма отправки письма');

все работает , текст появляется "форма отправки письма".

Как впихнуть форму, которая находится по урл


type: "POST",
url: "/sendmail/index_mail.php",
data: {vbz: vbz},

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий