Перейти к содержимому

Реферальная программа Мегаплана

Выбрать шаблон и создать сайт

  • Закрытая тема Тема закрыта

Как подгружать содержимое на страницу без перезагрузки

#21 Symphony

Symphony
  • Пользователь
  • 636 сообщений
  • Репутация: 54
0

Отправлено 02 Апрель 2011 - 23:59

не буду новую тему создавать, т.к. опять аякс.
по сути:

есть некий <select> c id=pagedropdown при выборе какого-нить <option> взависимости от value подгружается контент(если точнее файл getpageedit.php, в котором находиться форма) в блок <div> c id=new_editpage
код для наглядности:
<select id=pagedropdown>
<option value=1>Сыр</option>
<option value=2>Картофель</option>
<option value=3>Водка</option>
</select>
<div id=new_editpage></div>

jq:
$("#pagedropdown").change(function() {
		var pagevalue = $("#pagedropdown option:selected").val();
		getpageedit();
	
	} );

function getpageedit() {
	var pagevalue = $("#pagedropdown option:selected").val();
	var edit = $("#new_editpage");
	if (pagevalue.length != 0) {
		edit.load('system/getpageedit.php',{id : pagevalue});
	}

}

код в getpageedit.php
<form method="POST" action="index.php">
<textarea class="ckeditor">
<?=$content;?>
</textarea>
</form>



Как я говорил ранее в файле getpageedit.php находиться форма. к <textarea> подключен CKeditor, вот собственно и проблема редактор не работает (пробывал getpageedit.php на прямую запускать, тогда всё пашет, следовательно после подгрузки формы через аякс перестает работать js, я так подозреваю, что код ckeditor'a не видит подгружаемую <textarea>). как заставить всё заработать?
  • 0


#22 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 03 Апрель 2011 - 02:48

Symphony, как я понимаю, JS CKeditor'а один раз пробегается по странице и заменяет все textarea с определенным классом на свой wysiwyg, этот момент - полная загрузка DOM-структуры страницы. Когда же вы производите запрос Ajax на сервер, то возвращаемый контент не будет обработан JS CKeditor'а, т.к. его инициализация производится вначале.
Вот такой вариант работает (без задержки не срабатывает):
$("#pagedropdown").change(function() {
		var pagevalue = $("#pagedropdown option:selected").val();
		getpageedit();
	
	} );

function getpageedit() {
	var pagevalue = $("#pagedropdown option:selected").val();
	
	var edit = $("#new_editpage");
	edit.hide();

	if (pagevalue.length != 0) {
		edit.load('system/getpageedit.php',{id : pagevalue});
	}

   
	var interval = setInterval(function(){
		$('.ckeditor').ckeditor();
		edit.show();
		clearInterval(interval);
	},500);

}

  • 0

#23 Symphony

Symphony
  • Пользователь
  • 636 сообщений
  • Репутация: 54

Отправлено 04 Апрель 2011 - 11:34

всё отлично работает, когда первый раз выбираю из <select>'а <option value=1>Сыр</option>
Изображение
но когда делаю <option value=2>Картофель</option> второй раз, то загружается это:
Изображение
  • 0


#24 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 04 Апрель 2011 - 13:43

Symphony, Все атрибуты у тегов обверните в кавычки. Пока кавычек не видно...
Протестировал у себя на компе, всё работает.
Тест приложил в аттаче. Положите папку test в каталог _samples CKeditor

Прикрепленные файлы

  • Прикрепленный файл  test.zip   1,29К   Количество загрузок: 95

  • 0

#25 Symphony

Symphony
  • Пользователь
  • 636 сообщений
  • Репутация: 54

Отправлено 04 Апрель 2011 - 16:25

да, если учитывать такой вариант оно работает, но если прописать
<textarea class="ckeditor" name="content_page"></textarea>
то уже не работает(
  • 0


#26 Symphony

Symphony
  • Пользователь
  • 636 сообщений
  • Репутация: 54

Отправлено 04 Апрель 2011 - 17:04

все вопросы отпали, кому интересно или кому может пригодиться вот решение.
в положении , когда
<textarea class="ckeditor" name="content_page"></textarea>
скрипт не работает

удалил значение name в html получилось так:
<textarea class="ckeditor" name=""></textarea>

а в jq записал:
$('.ckeditor').attr('name','content_page');

форма начала работать.
  • 0


#27 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 06 Апрель 2011 - 15:55

Symphony, мистика, не должно быть такого. Потестирую на днях.
  • 0

#28 ProWebcash

ProWebcash
  • Пользователь
  • 2 сообщений
  • Репутация: 0

Отправлено 31 Май 2011 - 13:02

Опять я. Мне нужно в информ контейнер писать название ткущей страницы. Я нашел $('#titl').append(title_new); Но проблема в том, что он дописывает к уже имеющимся символам, а мне надо что бы содержимое переписывалось полностью. Вижу два варианта: 1 - сначала стереть, потом уже вышеприведенным методом вставить. Но тогда вопрос, как стереть то, что там было. 2 - есть какой-то метод, который сразу может заместить содержимое, если есть такой, подскажите как он называется.

Здравствуйте, может помогу, а может и опоздал)

Для того чтобы динамически менять содержимое блоков используйте функцию jQuery - html(). Если в нее ничего не передавать - эта функция вернет код элемента или блока к которому применена, а если передавать аргумент - то это должна быть строка, которая собой подменит содержимое элемента или блока.
Таким образом имеем следующий код для изменения заголовка страницы:
$("title").html("My new title");
А так мы в переменную t получим заголовок:
t = $("title").html();

PS: советую к ФФ поставить плагины: Firebug (отладочная консоль), FireQuery (позволяет подключать библиотеку jQuery).
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru