Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: обработать силами php форму, вызванную аяксом
 
 автор: aetern   (18.04.2011 в 22:30)   письмо автору
 
 

Загружаю при нажатии на ссылку Аяксом форму из файла usercitysel.php с селектами (список городов).

<div id="divUserCitySel">  
<a href=\"javascript:{}\" onclick=\"usercitysel()\">Города</a>
</div>

<script>
function usercitysel() {
    $.ajax({
        url: "usercitysel.php",
        beforeSend: function() {$('#divUserCitySel').html('<img src="images/loading.gif"/>');}, 
        success: function(data){$("#divUserCitySel").html(data);}, 
        error: function(){$("#divUserCitySel").html('Произошла ошибка.');}
        });
    }
</script>



Файл usercitysel.php:

<form action="???" method="post">
<select name="selcity"><option value="1">Москва</option><option value="2">Питер</option>....</select> (берется из БД MySql)
<input name="submit" type="submit" value="Выбрать"/>
</form>


Как при выборе города и нажатии на кнопку "Выбрать" в подзагруженной форме мне произвести обработку данных формы силами php и вывести результат на месте формы?

  Ответить  
 
 автор: cheops   (18.04.2011 в 22:36)   письмо автору
 
   для: aetern   (18.04.2011 в 22:30)
 

>Как при выборе города и нажатии на кнопку "Выбрать" в подзагруженной форме мне произвести
>обработку данных формы силами php и вывести результат на месте формы?
Здесь перезагрузка страницы допустима или это тоже должен быть AJAX-вызов?

  Ответить  
 
 автор: aetern   (18.04.2011 в 23:06)   письмо автору
 
   для: cheops   (18.04.2011 в 22:36)
 

перезагрузка страницы допустима только после обработки формы, а точнее после выполнения конечной функции:
setcookie("city",$_POST['selcity'],time()+77760000,"/")

  Ответить  
 
 автор: cheops   (18.04.2011 в 23:18)   письмо автору
 
   для: aetern   (18.04.2011 в 23:06)
 

Т.е. нужен все-таки AJAX-запрос? Так как POST-данные получить можно только отправив данные на сервер, а без перезагрузки это можно сделать только при помощи AJAX. Тогда проблема атрибута action отпадает (собственно и тэг <form> не требуется), вам на кнопку отправки нужно вешать еще один AJAX-обработчик, который возьмет данные из select и отправит их обработчику, потом дождется данных, установит cookie и произведет перезагрузку страницы.

  Ответить  
 
 автор: aetern   (18.04.2011 в 23:31)   письмо автору
 
   для: cheops   (18.04.2011 в 23:18)
 

>вам на кнопку отправки нужно вешать еще один AJAX-обработчик, который возьмет данные из select и отправит их обработчику, потом дождется данных, установит cookie и произведет перезагрузку страницы.

Вот именно это мне и нужно. Как я понял из ответа - это можно сделать только на JS?
Подскажите, как взять данные из select и отправить их обработчику.

  Ответить  
 
 автор: cheops   (18.04.2011 в 23:41)   письмо автору
 
   для: aetern   (18.04.2011 в 23:31)
 

Получить данные можно так
$('select[name=selcity]').val()
А отправить можно по аналогии с обработчиком, который вы приводите в первом сообщении.

  Ответить  
 
 автор: aetern   (18.04.2011 в 23:56)   письмо автору
 
   для: cheops   (18.04.2011 в 23:41)
 

ГЕНИАЛЬНО! Все получилось огромный респект мастеру cheops!
тока я использовал переменну в виде:
var cityVar = $('select[name=selcity]').attr('value');

подглядел здесь

  Ответить  
 
 автор: cheops   (18.04.2011 в 23:15)   письмо автору
 
   для: aetern   (18.04.2011 в 22:30)
 

Тогда просто отошлите данные текущей странице, на которой предусмотрите обработчик (его можно включить при помощи require()), который помещает выбранный город в сессию
<?php
  session_start
();
  ...
  if(!empty(
$_POST))
  {
     ...
     
$_SESSION['city'] = intval($_POST['selcity']);
  }
?>
А форму выбора города выводите только в том случае, если в сессии не определена переменная $_SESSION['city'].

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования