Показать сообщение отдельно
  #9 (permalink)  
Старый 23.05.2015, 11:14
Аспирант
Отправить личное сообщение для user_name Посмотреть профиль Найти все сообщения от user_name
 
Регистрация: 05.11.2014
Сообщений: 40

Poznakomlus
Цитата:
Хочется, чтобы вы сами нашли решение
Я не силен в js, поэтому сложно найти правильное решение
Но с вашей помощью у меня получилось сделать то что мне нужно, правда каким то извращенным способом.
Цитата:
Вот у меня есть две кнопки, выводится одна в зависимости от того что возвращает сервер. Параметры в эти две функции передаются одинаковые.
<input type="button" onclick="func1('{$param1}', '{$param2}')" class="style1" value="Подписаться" id="test">
<input type="button" onclick="func2('{$param1}', '{$param2}')" class="style2" value="Отписаться" id="test">


Если сервер выдал первую кнопку "Подписаться" то при клике на нее визуально меняю кнопку на "Отписаться" и отправляю запрос на сервер для подписки. При клике на "Отписаться" выполняются обратные действия. Если обновить страницу то сервер выдаю нужную кнопку. Все работает, но можно сделать как то проще?
function func1(param1, param2) {
					var element = document.getElementById('test');
					
					element.value = ['Подписаться','Отписаться'][element.state = element.state >>> 0 ? 0 : 1];
					 if(element.state){
                                                // Меняю стиль
					 	element.removeAttribute('class');
						element.setAttribute('class', 'style2');
						addFollow(param1, param2);
					 }else{
					 	element.removeAttribute('class');
						element.setAttribute('class', 'style1');
						subFollow(param1, param2);
					 }
  			 	 };

function func2(param1, param2) {
					var element = document.getElementById('test');
					
					element.value = ['Отписаться','Подписаться'][element.state = element.state >>> 0 ? 0 : 1];
					 if(element.state){
					 	element.removeAttribute('class');
						element.setAttribute('class', 'style1');
						addFollow(param1, param2);
					 }else{
					 	element.removeAttribute('class');
						element.setAttribute('class', 'style2');
						subFollow(param1, param2);
					 }
  			 	 };


function subFollow(param1, param2) {
$.ajax({
		url: "/ajax/",
		type: "POST",
		data: ({...}),
		dataType: "html"
	});
}

function addFollow(param1, param2) {
	$.ajax({
		url: "/ajax/",
		type: "POST",
		data: ({...}),
		dataType: "html"
	});
}
Ответить с цитированием