Показать сообщение отдельно
  #7 (permalink)  
Старый 06.01.2016, 01:17
Интересующийся
Отправить личное сообщение для CHER84 Посмотреть профиль Найти все сообщения от CHER84
 
Регистрация: 06.01.2016
Сообщений: 11

Сам сейчас столкнулся с данной проблемой, поэтому понимаю топикстартера, так как для сбора данных формы использую абсолютно такую же конструкцию как у топикстартера.
Если своими словами описывать проблему:
На сайте есть динамически подгруженное окно
$("#modal_form").load("/ajax/registration.php");

в файле регистрации куча различных полей для ввода информации, включая ползунок слайдер, для работоспособности которого подтянута библиотека UI. Плюс в зависимости от выбранного select (тип пользователя) всё окошко обновляется и для каждого типа пользователя отдается свой набор полей формы. Происходит это тоже посредством load
/* перезагрузка при выборе определенного select */
	$('#sel_who').change( function(){ 
		var myOption = $("#sel_who").val();
		$("#modal_form").load(
			"/ajax/registration.php",
			{
			whoareyou: myOption	// передаем переменную, заданную в option
			});
	});

Эта перезагрузка идет уже из самого динамически подгруженного файла, то есть на данном этапе JS воспринимается как код.
Далее после заполнения формы пользователь жмет на кнопку отправки формы и должен перейти ко второму шагу (загрузка изображений, которые привяжутся к вновь созданному пользователю), но прежде нужно проверить корректность отправленных данных. Их я проверяю средствами php в том же registration.php и при возникновении ошибки пытаюсь той же конструкцией load отправить пользователя на страницу формы и расставить все правильные переменные по своим полям, чтобы пользователю не пришлось все заново набирать
$("#modal_form").load(
		"/ajax/registration.php",
		{
		whoareyou: '.$whoareyou.',	
		step: 0,
		name1: '.$name1.',
		name2: '.$name2.',
		name3: '.$name3.',
		year: '.$year.',
		month: '.$month.',
		day: '.$day.',
		country: '.$country.',
		city: '.$city.',
		art_direction: '.$art_direction.',
		age_restrictions: '.$age_restrictions.',
		mincost: '.$mincost.',
		maxcost: '.$maxcost.',
		education: '.$education.',
		events: '.$events.',
		public: '.$public.',
		email: '.$email.',
		pass_err_code: '.$pass_err_code.',
		comeback: 1
	});

как раз отрабатывает конструкция, указанная у топикстартера и из-за innerHTML весь JS код превращается в простой текст
из-за того, что этот кусочек кода динамически собирается в .php я не могу вынести его в отдельный файл, для отдельного файла, как я понял, существует getscript.

для полноты картины ниже приведу код подключаемых библиотек и скриптов, в динамически подгруженном файле
<!-- Скрипты добавляем, чтобы работал ползунок -->
	<script type="text/javascript" src="js/jquery-1.6.1.min.js"></script> 
	<script type="text/javascript" src="/js/jquery.ui-slider.js"></script>
	<script type="text/javascript" src="/js/jquery.main.js"></script>
<!-- КОНЕЦ Скрипты добавляем, чтобы работал ползунок -->


<script>

$(document).ready(function() { // вся мaгия пoсле зaгрузки стрaницы

		$("#modal_form").load(
		"/ajax/registration.php",
		{
		whoareyou: '.$whoareyou.',	
		step: 0,
		name1: '.$name1.',
		name2: '.$name2.',
		name3: '.$name3.',
		year: '.$year.',
		month: '.$month.',
		day: '.$day.',
		country: '.$country.',
		city: '.$city.',
		art_direction: '.$art_direction.',
		age_restrictions: '.$age_restrictions.',
		mincost: '.$mincost.',
		maxcost: '.$maxcost.',
		education: '.$education.',
		events: '.$events.',
		public: '.$public.',
		email: '.$email.',
		pass_err_code: '.$pass_err_code.',
		comeback: 1
	});


	/* перезагрузка при выборе определенного select */
	$('#sel_who').change( function(){ // лoвим клик пo крестику или пoдлoжке
		var myOption = $("#sel_who").val();
		$("#modal_form").load(
			"/ajax/registration.php",
			{
			whoareyou: myOption	// передаем переменную, заданную в option
			});
	});
	
	
	/* Зaкрытие мoдaльнoгo oкнa */
	$('#modal_close, #overlay').click( function(){ // лoвим клик пo крестику или пoдлoжке
		$('#modal_form')
			.animate({opacity: 0, top: '45%'}, 200,  // плaвнo меняем прoзрaчнoсть нa 0 и oднoвременнo двигaем oкнo вверх
				function(){ // пoсле aнимaции
					$(this).css('display', 'none'); // делaем ему display: none;
					$('#overlay').fadeOut(400); // скрывaем пoдлoжку
				}
			);
	});
	
	
});
</script>


Извините, если сумбурно описал проблему, первый раз на форуме вопрос задаю.
Хочется уже для себя определиться, как сделать текст кодом, потому что проблема вылезает уже не в первый раз, раньше обходил ее так, чтобы после отправки формы уже не требовались скрипты JS, а вот теперь никуда не деться.
Ответить с цитированием