@formspring

Как передать переменную из js в php?

Добрый день!

Есть массив объектов из БД, отображаю его на странице через цикл:

<?php foreach ($cursor as $obj) { ?>
    <li onclick="openPres('<?php echo (string)$obj['_id']; ?>')" style="position:relative;">
    ...
    </li>
<?php } ?>


Далее при нажатии на любой из объектов, открывается попап, где отображаются данные об объекте, подгружаемые через ajax.

Код попапа лежит в том же файле, но вне цикла.

function openPres(presId) { 
    $.ajax({
	            type : 'POST',
	            url:'/php/wiz.php?evention=get_createdate&ref=pres',
	            data: "pres_id=" + presId,
	            success: function(returned_object) {
	            	$('#createdate').html(returned_object);
	            	console.log(returned_object);
	            }
    });
}


Вопрос - как эти данные можно передать в php, чтоб работать с ними? (например лайкать)
  • Вопрос задан
  • 4354 просмотра
Решения вопроса 1
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
Непонятно — вы отправляете id в wiz.php, этот скрипт формирует и присылает назад данные, а вы их хотите обратно на сервер? Зачем вам AJAX, если вы можете по id все данные получить прямо на сервере?

Update: После натужных попыток понять, кажется понял

CSS
.item{
	position:relative;
}


PHP
Цикл построения начался
<li data-id="<?php echo (string)$obj['_id']; ?>" data-type="item" class="item">...</li>
Цикл построения закончился

<div id="createdate" data-type="popup">
	<div class="content"></div>
	<button type="button" data-action="send">Залайкать</button>
</div>


JS
$(function () {
	var $popup = $('#createdate'),
		stop;

	$popup.data('content', $popup.children('.content'));
	$(document)
	.on('click', '[data-type="item"][data-id]', function () {
		if (stop) {
			return;
		}

		var $item = $(this),
			id = $item.data('id');

		$.ajax({
			type: 'POST',
			url: 'getObjectInfo.php',
			data: 'id=' + id,
			timeout: 5000,
			beforeSend: function(data) {
				stop = true;
				$item.addClass('loading');
			},
			success: function(data) {
				$popup
					.data('id', id)
					.data('content').html(data);
				stop = false;
				$item.removeClass('loading');
			},
			error: function() {
				//Не забываем про ошибки
				stop = false;
				$item.removeClass('loading');
			}
		});
	})
	.on('click', '[data-action="send"]', function () {
		if (stop) {
			return;
		}

		var $parent = $(this).closest('[data-type="popup"]'),
			params = {
				id = $parent.data('id')
				//Тут собираем изменённые данные
			};

		$.ajax({
			type: 'POST',
			url: 'setLike.php',
			data: $.params(params),
			timeout: 5000,
			beforeSend: function(data) {
				stop = true;
				$parent.addClass('loading');
			},
			success: function(data) {
				//Удачно залайкали
				stop = false;
				$parent.removeClass('loading');
			},
			error: function() {
				//Не забываем про ошибки
				stop = false;
				$parent.removeClass('loading');
			}
		});
	});
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
1. Также, через ajax отправить json обратно на php.
2. ??????
3. PROFIT
Ответ написан
@rsi
software engineer
А что именно вам не ясно, код отправки данных на сервер то верный.
Ответ написан
Комментировать
akubintsev
@akubintsev
Опытный backend разработчик
Вы получаете в попап данные. Так пусть они сразу отображаются в форме редактирования. Или сделайте отдельное окно для этого, вызываемое по кнопке типа "редактировать". На сабмит формы вешаете обработчик javascript, который сериализует данные формы и отправит на сервер через ajax.
Классика жанра.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы