[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: php и js
Ramzes_Ra
На странице есть код типа
if(isset($_POST['submit'],$_POST['number']))
{
//то делай код
}
else
{
echo 'ОШИБКА';
}

ей передаются данные из формы методом Пост, тут всё понятно. И если данных нет, то выводится ОШИБКА.

На этой же странице к кнопке привязан JS, который обращается к php обработчику с кодом и результат должен выводить вместо всего кода страницы.
Проблема: При нажатии на кнопку как я понимаю все ПОСТ сбрасываются, выводится не код из обработчик JS, а ОШИБКА из условия isset else 'ОШИБКА'. Как быть?
Ramzes_Ra
Пока спал придумал решение - может просто вызов напрямую к файлу закрыть в .htaccess
RewriteRule site.php - [F]
и со страницы убрать проверку if else. Сойдёт? =)
FatCat
Давай думать вслух.
пхп выполняется на сервере, джаваскрипт на компьютере посетителя (клиента).

Тебе нужно, чтобы при разных действиях клиента по-разному работал джаваскрипт?

Эта задача решается просто: сервером отдавать джаваскрипт.
То есть, на сервере:
if(isset($_POST['submit'],$_POST['number']))
{
echo '<script type="text/javascript">var test_form = 1;</script>';
}
else
{
echo '<script type="text/javascript">var test_form = 0;</script>';
}


Дальше на странице джаваскрипт работает со значением переменной test_form:
<script type="text/javascript">
if(test_form == 1)
{
// информация для авторизованного посетителя
}
else
{
// информация об ошибке
}
</script>


_____________
Бесплатному сыру в дырки не заглядывают...
Ramzes_Ra
Цитата (FatCat @ 31.08.2013 - 10:38)
Давай думать вслух.
пхп выполняется на сервере, джаваскрипт на компьютере посетителя (клиента).

Тебе нужно, чтобы при разных действиях клиента по-разному работал джаваскрипт?

Эта задача решается просто: сервером отдавать джаваскрипт.
То есть, на сервере:
if(isset($_POST['submit'],$_POST['number']))
{
echo '<script type="text/javascript">var test_form = 1;</script>';
}
else
{
echo '<script type="text/javascript">var test_form = 0;</script>';
}


Дальше на странице джаваскрипт работает со значением переменной test_form:
<script type="text/javascript">
if(test_form == 1)
{
// информация для авторизованного посетителя
}
else
{
// информация об ошибке
}
</script>

Интересно, но кажется немного не туда. Объясню

form.php //файл с формой и кнопкой submit// -----> page.php // страница с if else, если существует параметр, то при нажатии на кнопку 'завершить' срабатывает JS и отправляет данные через ajax в обработчик page_load.php// -----> page_load.php //Обработчик, который выводит echo ''; в зависимости от того, удался запрос или нетl// ------> дальше через аякс мы получаем
success: function(html) {
$("#summer").empty();
$("#summer").html(html);

то есть тот echo, который выдал нам обработчик, мы будем выводить у себя на page.php.

НО. Вместо echo с обработчика выводится ошибка из-за отстутствия переменных в if-else
FatCat
Скажи что должно быть? Авторизовался и ходишь по страницам, а пришел неавторизованный - шиш?
Стандартная задача, и имеет множество стандартных решений: хранить данные авторизации в сессии; или в адресной строке ключ авторизации, или в куках...
Хочешь хранить в переменных джаваскрипт - храни в переменных джаваскрипт, только не забывай при отправке любого запроса серверу передавать параметр авторизации, и проверять его н сервере.

_____________
Бесплатному сыру в дырки не заглядывают...
Ramzes_Ra
Цитата (FatCat @ 31.08.2013 - 18:04)
Скажи что должно быть? Авторизовался и ходишь по страницам, а пришел неавторизованный - шиш?
Стандартная задача, и имеет множество стандартных решений: хранить данные авторизации в сессии; или в адресной строке ключ авторизации, или в куках...
Хочешь хранить в переменных джаваскрипт - храни в переменных джаваскрипт, только не забывай при отправке любого запроса серверу передавать параметр авторизации, и проверять его н сервере.


Должно быть так, чтобы при нажатии на page.php кнопки -> JS делал аякс запрос к обработчику и выводил на этой же page.php ответ обработчика вместо кода страницы. А выводит, что нет ПОСТ переменных. Страница ведь не перегружается, должны оставаться.. вот я и не понимаю..

хотя возможно это мой тупизм, где-то тупанул, потому как 2 дня кодю, мало сплю


тьфу, точно спать пора)))))) ахах))
да, ты прав..
Цитата
при отправке любого запроса серверу передавать параметр авторизации, и проверять его н сервере.
я так делаю, у меня с js и аяксом проблем нет.
Просто понимаешь. Одно дело, когда скрипт не работает, поэтому может быть проблема как у меня. НО! все действия обработчика выполняются и изменения в базе есть. А сообщение об этом почему-то не передается. Вот сижу думаю почему, наверное где-то намудрил, хотя приём данных стандартен
$.ajax({
type: "POST",
url: "page_load.php",
data: "digit="+digit+"&user=<?=$_SESSION['id']?>",
success: function(html) {
$("#summer").empty();
$("#summer").html(html);
}
}
);
Ramzes_Ra
Аааа как хорошо кодить на выспавшуюся голову)))
нужно было просто добавить return false;"
onclick="script(); return false;"
Быстрый ответ:

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