[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Подсчет количества показов формы подписки
Владимир55
Простейшая форма подписки имеется в сети вот здесь: http://www.sitehere.ru/examples/09.09.2014/ Её код я не стал приводить, поскольку он реально длинный и его проще посмотреть прямо на сайте.

Форма всплывает тогда, когда страницу прокрутили до самого низа. Но прокручивают далеко не все посетители, а потому хочется установить счетчик, который будет подсчитывать количество реальных показов.

Для этого я попытался вставить вызов РНР файла, вставив вызов вот таким образом:

<div class="subscribe-me">

<?php


file_put_contents("1stat_form.txt", "ДА");

?>

<h2>
Подписка на обновления</h2>


Надеялся, что запись файла 1stat_form.txt произойдет только тогда, когда форма откроется, но в реальности файл вызывается при каждом открытии страницы, даже если ее не прокручивают вниз и форма на появляется.

Как можно решить эту проблему?

(Описание скрипта http://www.sitehere.ru/nastraivaemoe-vsply...-okno-podpiski)
sergeiss
Цитата (Владимир55 @ 12.11.2016 - 23:16)
Форма всплывает тогда, когда страницу прокрутили до самого низа.

Вот когда дается команда на показ формы (в JS), то тогда аяксом отсылай соответствующую инфу на сервер.
Ну и вообще разберись с тем, что дает ПХП, а что дает JS, какие происходят клиент-серверные процессы. По целому ряду твоих вопросов видно, что ты этого не понимаешь. Ну вот в данном случае. Естественно, что данная обработка (как ты написал) будет сделана в момент формирования страницы, даже до её показа клиенту. И ты так подсчитаешь только то, сколько раз вообще было обращение к странице.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Владимир55
Цитата (sergeiss @ 13.11.2016 - 06:28)
Вот когда дается команда на показ формы (в JS), то тогда аяксом отсылай соответствующую инфу на сервер.

Я с этого и начал, но, почему-то, не сработало.

Делал вот так:
<div class="subscribe-me">

<?php


echo "
<script type="
. '"text/javascript">' . "
$(document).ready(function() {
$.ajax('1stat_form.txt');
});
</script>
"
;

?>

<h2>
Подписка на обновления</h2>
sergeiss
То, что ты написал на JS, срабатывает безо всяких условий. Страница загрузилась - пытаешься что-то сделать аяксом. И я не понял, кстати, что именно. Что за текстовый файл у тебя тут указан, какова его роль, по твоему мнению?
Если это (вдруг) сработает, то при каждой загрузке страницы. А тебе надо сделать аяксовый вызов внутри обработчика показа формы.

И еще. Лучше JS хранить в отдельных файлах. Вот так вот формировать код JS внутри ПХП - это изврат и неправильность.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Владимир55
Цитата (sergeiss @ 13.11.2016 - 08:03)
Что за текстовый файл у тебя тут указан, какова его роль, по твоему мнению?
Если это (вдруг) сработает, то при каждой загрузке страницы. А тебе надо сделать аяксовый вызов внутри обработчика показа формы.

И еще. Лучше JS хранить в отдельных файлах. Вот так вот формировать код JS внутри ПХП - это изврат и неправильность.

Вы все верно сказали. Я просто ищу работоспособный способ связи с сервером, а тут любой файл годится, ибо это просто индикатор. И изврат - это временно, потом все почищу.


Цитата
надо сделать аяксовый вызов внутри обработчика показа формы


Как, как конкретно это сделать?
(Я уже сто способов перепробовал)
sergeiss
Цитата (Владимир55 @ 13.11.2016 - 12:09)
Как, как конкретно это сделать?
(Я уже сто способов перепробовал)

Так: находишь обработчик открытия (показа) формы. И вставляешь внутрь неё аяксовый вызов. Я даже не знаю, как еще объяснить, честно говоря. Если только в виде "псевдокода"

function ОбработчикОткрытияФормы() {
// сначала код открытия формы
...
// а потом код информирования сервера
$.ajax( ... /*со всеми нужными параметрами*/ );

}


_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Владимир55
sergeiss, спасибо!

Я, к сожалению, ничего не понял, но все равно спасибо за попытку помочь!
comolov
Владимир55,
Вставь в файл jquery.subscribe-better.js, в метод $.fn.openWindow эти строки

if(typeof settings.myOnShow == 'function') {
settings.myOnShow();
}

должно быть так
...
setTimeout(function(){
$(".sb").show();
$("body").addClass("sb-open");
}, 300);
}
}


if(typeof settings.myOnShow == 'function') {
settings.myOnShow();
}

if (settings.showOnce == true) shown = true;
animating = false;
...

Это вызов функции - коллбека. Передать его теперь нужно так
$(document).ready( function() {
$(".subscribe-me").subscribeBetter({
myOnShow: function() {
Этот код исполнится при открытии формы
$.ajax('http://site.ru/increment.php');
}
}
);
});

PHP файл может быть таким
<?php
$count = (int)file_get_contents('increment.txt');
file_put_contents('increment.txt', $count += 1);

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.