Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   innerHTML и скрипты (https://javascript.ru/forum/events/60377-innerhtml-i-skripty.html)

laimas 06.01.2016 03:32

function myFunction(){ - это объявленная функция
$(document).ready(function() - это событие

Где вы такое нашли, да еще по указанной ссылке?

CHER84 06.01.2016 04:24

Все-таки есть некоторое неудобство в том решении, которое я выше описывал.
Решил сделать по-другому.
Кнопкой сабмит вызываем функцию:
function formSubmit(result_id,form_id,url){

		//var dataVar = jQuery("#"+form_id).serializeArray();
		var dataVar = $("#"+form_id).serialize();  // var1=1&var2=0&...
		var dataVar = dataVar.replace(/&/g,",");  // var1=1,var2=0, ...
		var dataVar = dataVar.replace(/=/g,":");  // var1:1,var2:0, ...
		
		
		$("#modal_form").load(
		"/ajax/registration.php",
		{
		dataVar
		});
	}


не работает...
пробую задать параметры вручную
function formSubmit(result_id,form_id,url){

		//var dataVar = jQuery("#"+form_id).serializeArray();
		var dataVar = $("#"+form_id).serialize();  // var1=var1&var2=var2&...
		var dataVar = dataVar.replace(/&/g,",");  // var1=var1,var2=var2, ...
		var dataVar = dataVar.replace(/=/g,":");  // var1:var1,var2:var2, ...
		
		
		$("#modal_form").load(
		"/ajax/registration.php",
		{
		var1: 1,var2:0
		});
	}


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

Еще нашел, что нужно использовать
var dataVar = $("#"+form_id).serializeArray();

Но как из массива объектов сделать приемлемую форму для передачи данных - тоже не могу разобраться.

CHER84 06.01.2016 04:25

Цитата:

Сообщение от laimas (Сообщение 402753)
function myFunction(){ - это объявленная функция
$(document).ready(function() - это событие

Где вы такое нашли, да еще по указанной ссылке?

это уже я наворотил, поэтому и не нравится мне такой подход =)

laimas 06.01.2016 04:43

Цитата:

Сообщение от CHER84
Но как из массива объектов сделать приемлемую форму для передачи данных

Не понял о какой форме речь, $("#"+form_id).serializeArray() это данные формы в виде объекта для передачи серверу, а что значит создать приемлемую форму?

CHER84 06.01.2016 04:58

Я имею ввиду такой тип данных, который бы корректно воспринялся.
например, когда я пишу код вот так:
$("#modal_form").load(
		$("#modal_form").load(
		"/ajax/registration.php",
		{
		var1: 1,
		var2: 0
		});

то данные успешно передаются и я могу с ними работать
Но когда я делаю
var dataVar = 'var1:1,var2:0';
		
		$("#modal_form").load(
		"/ajax/registration.php",
		{
		dataVar
		});

то данные не передаются. Соответственно я предполагаю, что проблема в типе передаваемых данных
http://jquery-docs.ru/Ajax/load/#source
здесь сказано "
данные (необязательно) Map,Строка
Пары ключ/значение, которые будут отосланы на сервер. Начиная с jQuery 1.3 может также передаваться строка данных. При указании строки, запрос будет типа GET, для всего остального — типа POST.
"
http://jquery-docs.ru/Types/
тут я не смог найти что такое мар, строка
В моем представлении строк два представленных выше куска кода должны одинаково отрабатывать, но видимо я чего-то не понимаю.
Это я пока не касаюсь serializeArray, потому что возвращаемое им для меня еще более непонятно и как это привести к более наглядной форме я пока не понял, просто массив, переданный как данные
var dataVar = jQuery("#"+form_id).serializeArray();	
		
		$("#modal_form").load(
		"/ajax/registration.php",
		{
		dataVar
		});

тоже не дает никакого результата, всмысле данные теряются, но тут не так обидно, они изначально [object Object] и требуется какая-то обработка, для приведения их к виду var1:1,var2:0 ...

CHER84 06.01.2016 05:15

var dataVar = $("#"+form_id).serializeArray();
		
		alert(dataVar);
		$("#modal_form").load(
		"/ajax/registration.php",dataVar
		);


Вот так без фигурных скобок работает и передает данные.
Спасибо за оказанную помощь, Вы мне очень помогли, по сути в теме уже два варианта решения проблемы и второй мне больше нравится, так как в нем мы никуда не уходим от метода load, который без дополнительных танцев с бубном воспринимает JS как код.
У меня голова уже пухнет, поэтому отложу увлекательное ковыряние на завтра =)

laimas 06.01.2016 05:26

Цитата:

Сообщение от CHER84
Вот так без фигурных скобок работает и передает данные.

Ну так зачем же они, если var dataVar = $("#"+form_id).serializeArray(); и есть объект?

Но это не ответ на вопрос "о какой форме речь". Вообще не понятно - зачем возвращать на страницу формы регистрации при ошибках, если ошибки нужно проверять в сеансе регистрации, а значит и так находимся в форме? Скорее нужен переход на страницу завершения регистрации при успехе. В вашем случае нужен диалог, а его удобнее вести посредством JSON формата, и лучше не .load() использовать, а .ajax() метод. Это будет более гибкое решение, да и не зная всего уверен, что многое можно иметь готовым на клиенте, не гоняя в данных сценариев.


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