- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу

Как снизить ДРР до 4,38% и повысить продажи с помощью VK Рекламы
Для интернет-магазина инженерных систем
Мария Лосева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Доброй ночи форумчане!
Начинаю изучать AJAX, по мере надобности, посему возникают ситуации в которых мне нужна помощь, вот у вас ее и прошу.
Не получаю ответ при отправке ajax запроса, смотрел через фаербаг.
Вот скрипт отправки:
$(document).ready(function(){
$("#subb").click(otp);
function otp() {
var post2 = $('input[type="radio"]:checked').val();
var pos = {poll : post2}
$.ajax({
url: '/opros.php',
type: "POST",
dataType: "json",
data: pos,
success: function(data){
$("#polls-3-ans").html(data);
}
});
}
});
Форма такая:
<form class="comm" action="/opros.php" method="post">
<input type="radio" id="poll-answer-1" name="poll" value="1"> <label for="poll-answer-1">Ні</label>
<input type="radio" id="poll-answer-2" name="poll" value="2"> <label for="poll-answer-2">Так</label>
<input type="submit" name="vote" class="buttons" id="subb" value=" Відповісти ">
</div>
</form>
Php код:
if (isset($_POST['poll'])) {
$answer = $_POST['poll'];
}
if (isset($answer) and $answer == 1) {
$arr = "Дякуємо Вам за відповідь!";
echo json_encode($arr);
}
if (isset($answer) and $answer == 2) {
$arr = '
<form class="comm" action="/opros.php" method="post">
<input type="radio" id="poll-answer-3" name="poll" value="3"> <label for="poll-answer-3">Ні</label>
<input type="radio" id="poll-answer-4" name="poll" value="4"> <label for="poll-answer-4">Так</label><input type="submit" name="vote" class="buttons" id="subb" value=" Відповісти ">
</form>
';
echo json_encode($arr);
}
if (isset($answer) and $answer == 3) {
$arr = '
<form class="comm" action="/opros.php" method="post">
<textarea name="comment"></textarea></li>
<input type="submit" name="vote" class="buttons" id="subb" value=" Відповісти ">
</form>
';
echo json_encode($arr);
}
if (isset($answer) and $answer == 4) {
$arr = "Дякуємо Вам за відповідь!";
echo json_encode($arr);
}
if (isset($_POST['comment'])) {
$to = 'почта';
$subject = 'Тема';
mail($to, $subject, $comment);
$arr = "Дякуємо за Ваш відгук!";
echo json_encode($arr);
}
Не могу никак понять, уже пол дня сижу не работает ajax и все. Работает как обычный php перекидывает на страницу с ответом json.
Если запускаю функцию не по кнопке, а сразу, тогда все окей аякс срабатывает и получает ответ и выводит куда нужно.
Помогите найти ошибку, т.к уже и пробовал через Jquery form plugin результат тот же.
Ну так и будет перекидывать, чтоб не перекидывало, нужно делать както так:
Имя: <input name="name" type="text" maxlength="128">
<input name="submit" type="submit" value="Отправить" onClick="saveform (this.form);return false;">
</form>
<div id="enter_name"></div>
<script type="text/javascript">
function saveform (data)
{
var name = data.name.value;
$.post('save.php',{name:name},function(data){
$('#enter_name').html(data);
},'json');
}
</script>
<script src="http://code.jquery.com/jquery.js"></script>
тогда будет без перезагрузки выводиться ответ на той же странице
В конце функции otp надо вставить
В конце функции otp надо вставить
Спасибо помогло!
Но только до следующего появления формы т.е 1 итерация проходит и все, дальше так же перекидывает. Создавал отдельную функцию, разные айди назначал, прописывал ретурн, но...
В фаербаге На отправку вообще ничего не идет, никакого запроса.
Но только до следующего появления формы
on используйте.
Все-равно не работает :(
Форма следующая появляется, нажимаю сабмит и перебрасывает на результат в пхп скрипте. return false стояит. Пробовал уже и разные функции и передавать через json только числа, а потом работать и вставлять форму через javascript, результат то же. Если приписываю к сабмиту onClick="return false;" то не перекидывает и на отправку не идет POST, судя по фаербагу. Готов немного заплатить если расскажите в чем была проблема...
Вообще, для форм предпочитаю onsubmit использовать.
Ещё можно delegate посмотреть http://api.jquery.com/delegate/
или on ему соответствующий использовать.
вместо
$("#subb").click(otp);
попробуйте
$("#subb").live("click", otp);
если не получится светите URL где можно вживую проверить
$("#subb").live("click", otp);
live уже с 1.7 deprecated
А в 1.9 может и не сработать.. т.к. removed
Вообще странно, у меня мой вариант работает и при многократном нажатии. А почему ответ в json формате? Уберите в функции otp эту строку:
dataType: "json",
А в php-скрипте вместо
так
Всем спасибо! Проблему решил, как написал Оптимизайка, $("#subb").live("click", otp);
И все заработало! Спасибо всем не безразличным!
Хочу еще сказать что ivan-lev, настоящий профи, помогает смотрю в этой ветке всем и мне уже пару-тройку раз.
дани мапов, Убрал :) Не знал что так можно, спасибо за опыт.
Всем успехов!