Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Отловить загрузку через ajax

Всем доброго времени суток. Есть такой вопрос. Как можно отловить загрузку элемента через ajax? А именно к примеру, после отработки ajax, появился элемент с id="element", момент его появления можно было отловить с помощью livequery
Javascript
1
2
3
$('#element').livequery(function(){
    console.log('Элемент появился');
});
Но с новой версией jquery, данные методы не проходят, дак как можно отловить теперь появление элемента после ajax? Данный способ (ниже) не работает. Кто может дайте ссылку почитать или подскажите. За ранее спасибо.
Javascript
1
2
3
$(document).on('load', '#element', function (){
    console.log('Элемент появился');
});
Ответ: Balanaar, случай приведенный выше единичный, в реалиях кода, несколько файлов, плагинов и так далее, и все это запихать в коллбек функцию? А если у меня это не единственный ajax? А их несколько, и сколько кода в итоге получится в каждом коллбеке, там же черт ногу сломит
Вопрос: Не работают скрипты при загрузке через ajax

Здравствуйте!
использую загрузку страниц Php через ajax, но скрипты (JS) не функционируют при этом
Как бороться с данной проблемой?
Ответ: cоздайте новый тег скрипт document.createElement('script'), скопируйте содержимое загруженного скрипта в него через textContent и вставьте его куда-нибудь, затем можете удалить загруженный с сервера script
Вопрос: Почему не работает POST через AJAX

Есть такая форма:
<form id="settingsFrm" name="settingsFrm" method="POST" action="saveSettings.php">
	<input type="hidden" name="tHeaderText" value="New Title" />
	<input type="hidden" name="cHeaderText" value="" />
	<input type="hidden" name="cHeaderBackground" value="" />
	<input type="hidden" name="tTitle" value="Title" />
	<input type="submit" value="Сохранить настройки" />
</form>

Передаю её через AJAX вот так:
$("#settingsFrm").on("submit", function(eo){
	var $that = $(this);
	var $formData = new FormData($that.get(0));
	alert($that.attr("method"));
	$.ajax({
		url: $that.attr("action"),
		type: $that.attr("method"),
		contentType: "application/x-www-form-urlencoded",
		processData: true,
		data: $formData,
		dataType: "text", //"json",
		success: function(data) {
			alert(data);
		},
		error: function(xhr, textStatus, errorThrown) {
			alert("Ошибка!" + "\n" + xhr + "\n" + xhr.status);// + "\n" + xhr.responseText);
		}
	});
	eo.preventDefault();
});

saveSettings.php имеет такой вид:
<?
	if(!empty($_POST[tHeaderText]))
		echo $_POST[tHeaderText];
	else
		echo "Ошибка";
	exit;
?>

И получаю сообщение "Ошибка". Если processData=true, то php отрабатывает правильно, но при этом происходит переход на страницу saveSettings.php, а возврата на страницу с которой отправляю данные не происходит.
В чём может быть дело?
Ответ: Работает вот такой вариант отправки:
$("#settingsFrm").on("submit", function(eo){
	var $that = $(this);
	var $formData = new FormData($that.get(0));
	alert($that.attr("method"));
	$.ajax({
		url: $that.attr("action"),
		type: $that.attr("method"),
		contentType: false,
		processData: false,
		data: $formData,
		dataType: "text", //"json",
		success: function(data) {
			alert(data);
		},
		error: function(xhr, textStatus, errorThrown) {
			alert("Ошибка!" + "\n" + xhr + "\n" + xhr.status);// + "\n" + xhr.responseText);
		}
	});
	eo.preventDefault();
});
Вопрос: Скрытие динамически добавленных через Ajax элементов

Здравствуйте, уважаемые дамы и господа. На вашем форуме я впервые. Относительно недавно начал знакомиться и разбираться с jquery. В процессе ознакомления с этой библиотекой я столкнулся с решением задачи, которая поставила меня в тупик и суть которой я хотел бы изложить в этой теме.
Задача состоит в следующем. Имеются две PHP страницы, одна из которых предназначена для генерации контента (назовем её CgenerationPage.php), а вторая служит для его отображения (Cvisualisation.php). Передача данных от страницы CgenerationPage.php к странице Cvisualisation.php выполняется с помощью ajax. Необходимо обеспечить скрытие динамически добавляемого с помощью ajax элемента в процессе загрузки страницы Cvisualisation.php. Должно получиться следующее: страница Cvisualisation.php загружается, она подхватывает в момент загрузки данные со страницы CgenerationPage.php и скрывает полученный через ajax динамически добавленный элемент. По идее для этого надо использовать конструкцию .on() и делегирование событий, но проблема в том, что для .on() необходимо передавать события, связанные с мышью, клавиатурой и т.п., а я бы хотел реализовать скрытие динамически добавленного элемента без манипуляций со стороны пользователя. Сколько ни пытался такое проделать в jquery, у меня ничего не вышло. Может быть я не туда копаю? И вообще возможно такое сделать в jquery? Или для этого потребуется отдельная библиотека/плагин? Заранее благодарен за ответы.


Код страниц, приведённый ниже, весьма условен, его цель - проиллюстрировать более наглядно описываемую задачу.

CgenerationPage.php

<?php
echo '<P class="question">Иванов Иван Иванович</P>';
?>

Cvisualisation.php

<body>
<form action="loginForm" method="post" class="loginForm" id="loginForm">
<p>
<label for="textfield">Фамилия</label>
<input type="text" name="surname" id="surname"/>
</p>
<p>
<label for="name">Имя</label>
<input type="text" name="name" id="name" />
</p>
<p>
<input type="submit" name="button" id="button" value="Отправить" />
</p>
</form>
</body>
<script src="jquery-3.2.1.min.js"></script>
<script>
$.post('CgenerationPage.php', function(data){
$('#loginForm').after(data)
})
</script>
</html>
Ответ: Нет. Хочу понять, возможно ли с помощью jquery выполнить определённые действия (например скрытие) с динамически добавленным элементом DOM в момент загрузки web страницы. Не по щелчку мышью, не по нажатию клавиши и т.д., а именно в момент загрузки страницы, без воздействия со стороны пользователя
Вопрос: Кнопки "next" и "prev" в Colorbox после загрузки картинок через ajax

В блок ajax-ом загружаю картинки для Colorbox галереи.
Пишу:
$('.ajax_wrapper').on('click', '.colorbox', function(){        
        $(".colorbox").colorbox({rel:'colorbox'});  
      });

Чтобы работал Colorbox после ajax.
Всё работает, картинки открываются/закрываются. Но вот листалка туда/сюда работает не очень хорошо: через один щелчок, т.е. чтобы перейти вперед или назад надо нажать 2 раза...
Помогите плиз, кто сталкивался?
Ответ: Вопрос снимается: все работает, просто напутал в html
Вопрос: Выполнение JS подгруженного через AJAX

Есть группа элементов HTML + JS которые подгружаются на страницу после клика через AJAX. Понятное дело подгруженный JS не выполняется. Как заставить браузер выполнить его?

Отделить JS от HTML и выполнить через eval не получится.
Ответ: - на этой странице во вкладке "Статистика ставок" должен быть график подгружаемый, но он отображается только когда JS будет на странице при загрузке страницы, при клике подгружаемый JS не срабатывает.
Вопрос: Загрузка картинок через AJAX

Добрый день.
Начинаю изучать php и столкнулся с вопросом загрузки изображений на сервер. Нашел в сети для этого плагин dmUploader (example1). Он работает прекрасно и всем мне подходит, но когда я попытался приспособить его под свою архитектуру сайта, то столкнулся с возникающими ошибками (example2). Кто-нибудь может мне помочь в настройке?

Если я пишу не туда или прикладываю не то, скажите об этом, пишу первый раз, но быстро обучаюсь.
Скачать файл:
Скачан раз: 5
Ответ:
Ошибки какие?
В вашем коде никто ковыряться не будет.


-----
Список фильмов с описанием, блекджеком и... для Joomla? ->
Демо нового движка для сайта php.su -> , проект на
Вопрос: как передать php массивы через ajax

Итак, имеется страница с GET переменной $_GET[id], с помощью которой осуществляется запрос к БД, и все поля из таблицы плюс эта GET-переменная засовываются в массив $page,

$page['id']=$_GET[id];

$sel = "SELECT * FROM users WHERE id='$_GET[id]'";
$res = mysql_query($sel); 

$page_data=mysql_fetch_assoc($res);

$page['login']=$page_data['login'];
$page['name']=$page_data['name'];
$page['sirname']=$page_data['sirname'];

только полей в 4 раза больше

Также на странице используются сессии ($_SESSION[]).
Пока, надеюсь, все ясно

Имеется div class="page" в котором нужно обновлять контент из бд, используя переменные в массивах, все работает идеально (без обновлений) но задача такова.

Начал я решать эту задачу вырезав все в .page в отдельный php документ и пытался его загружать через $(".page").load("elems/page_content"); c setInterval, но терялось соединение с бд и массивов было не достать, кстати тоже не знаю почему. Но тут меня осенило, я решил через AJAX, ведь с ним можно передавать данные в data, но тут загвоздка, как передать массивы $page и $_SESSION ???

Буду очень благодарен если покажете что и как.

код получился такой

function show() 
{ 
$.ajax({ 
url: "/elems/user-published.php", 
cache: false, 
data:page:<?php echo $page?>,
beforeSend: function(){
$(".page").html("");
},
success: function(data){ 
$(".page").html(data); 
} 
}); 
} 

$(document).ready(function(){ 
show(); 
setInterval('show()',5000); 
});
Ответ: То, что не текст я в (int) переделываю позже, а на счет id, да, уверен, а так, спасибо за некоторые идеи. Плюс я пришел к работающему решению задачи, так что вопрос можно считать закрытым.
Вопрос: 2 запроса к обработчику через ajax

Не пойму, почему идет 2 запроса к обработчику через ajax.
<form method="POST" id="formx" action="javascript:void(null);" onsubmit="call()">...</form>


function call() {
				  var msg   = $('#formx').serialize();
                  $("#loader-overlay").show();
					$.ajax({
					  type: 'POST',
					  url: 'data.php',
					  data: msg,
					  success: function(data) {
						$('.results').html(data);
                        $("#loader-overlay").hide();
					  },
					  error:  function(xhr, str){
							alert('Error: ' + xhr.responseCode);
						}
					});
			 
				}

Куда копать?
Ответ: решено
Вопрос: Отправка формы через Ajax

Приветствую. Есть форма обратной связи в модальном окне, отправка происходит при проверке через Ajax.

Проблема в том, что форма отправляется даже пустой, хотя у одного из input стоит обязательно. При нажатии отправить подсвечивает обязательно, но все равно отправляет. Как сделать проверку этого поля, и если оно пустое не отправлять? Спасибо!

Код Ajax:

<script>
		$(document).ready(function () {
			$("input#submit").click(function(){
				$.ajax({
					type: "POST",
					url: "process.php",
					data: $('form.contact').serialize(),
					success: function(msg){
						$("#thanks").html(msg)
						$("#myModal").modal('hide');
						alert("Спасибо, ваше сообщение отрпавлено!");
					},
					error: function(){
						alert("failure");
					}
				});
			});
		});
    </script>


Код PHP обработчика:

<?php
$myemail = 'mail@ukr.net';
if (isset($_POST['name'])) {
$name = strip_tags($_POST['name']);
$phone = strip_tags($_POST['phone']);
$email = strip_tags($_POST['email']);
$message = strip_tags($_POST['message']);
echo "<span class=\"alert alert-success\" >Сообщение отправлено!</span><br><br>";
$to = $myemail;
$email_subject = "Заявка на консультацию: $name";
$email_body = "Получена заявка на консультацию. ".
" Подробнее:\n Имя: $name \n ".
"Email: $email\n Телефон: $phone\n Вопрос \n $message";
$headers = "From: $myemail\n";
$headers .= "Reply-To: $email";
mail($to,$email_subject,$email_body,$headers);
}?>
Ответ:
Сообщение от ru.scr
обязательно к заполнению
<!DOCTYPE HTML> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body>
<form>
<input name="as" required="" />
<input type="submit" value="GO" />
</form>
</body> 
</html>


Получится отправить?

И читайте о том как оформляются почтовые отправления. Так отправлять почту нельзя.