Форум программистов, компьютерный форум, киберфорум
Наши страницы
PHP для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.69/42: Рейтинг темы: голосов - 42, средняя оценка - 4.69
lomvasil
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 25
1

Обработка данных без перезагрузки страницы

06.06.2011, 20:28. Просмотров 7751. Ответов 6
Метки нет (Все метки)

всем привет!

есть страница, которая состоит из 3х блоков:

1. таблица (выводится всегда)
2. кнопка, которая приобретает значение disabled, в случае, если нет определенного куки.
3. форма post, которая появляется, если нет того же куки.

если куки нет, то выводится 3й блок, где предлагается ввести определенное значение в поле ввода и нажать кнопку. после чего куки устанавливается, и страница отправляется на перезагрузку
PHP
1
echo '<meta http-equiv="refresh" content="0; url=http://...">';
знаю, метод пещерный..

поэтому и ищу способ сделать юзабилити более продвинутым. с Javascript и технологией Ajax не дружу вообще никак. до этого момента все реализовывалось исключительно на php.

многие из Вас наверняка сразу начнут ставить ссылки на api jQuery и т.п., типа читай и просвещайся.

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

иными словами, как сделать так, чтобы после установки куки (проверяются введенные данные в 3м блоке, и, если все ок, - устанавливается куки) не нужно было ставить редирект на перезагрузку страницы, а просто enable кнопку 2го блока и убрать 3й блок, - все это на время, пока есть куки.

заранее спасибо
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.06.2011, 20:28
Ответы с готовыми решениями:

Обработка select без перезагрузки (refresh) страницы
Доброго времени суток! Ситуация следующая: есть форма на ней несколько селектов..и там же есть 2...

Вывод данных из БД без перезагрузки страницы
Здравствуйте,помогите пожалуйста сделать вывод результата поиска в форму(rezultat) без перехода на...

Обновление в базе данных без перезагрузки страницы
есть форма &lt;form method=&quot;post&quot; action=&quot;?id=' . $row . '&amp;victory='.$_GET.'&quot;&gt; &lt;input...

Переделываь часть страницы без перезагрузки страницы
И так у меня есть код &lt;?php $file = &quot;./toolbar.php&quot;; $contents = file($file); $string =...

Исполнение PHP-скрипта без перезагрузки страницы и без знания JavaScript(!) - Xajax
Приветствую! Решил запостить отдельной темой, а в прилепленной (про Ajax) просто разместить на нее...

6
djvergon
наблюдатель
28 / 16 / 5
Регистрация: 20.05.2011
Сообщений: 1,123
07.06.2011, 10:52 2
бразе да тут тебе ajax нужен вот инфа:
http://anton.shevchuk.name/javascript/jquery-for-beginners-ajax/
http://zhogov.ru/stat_62.html
http://www.linkexchanger.su/2008/34.html
http://koz1024.net/interfaces/jquery-ajax.html
ещё надо

Добавлено через 4 минуты
а данную задачу без него ни как
1
lomvasil
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 25
18.06.2011, 15:32  [ТС] 3
по-моему как-то можно с jQuery ,методом .load()

но почему-то нестыковка где-то:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$('#form_add').submit(function (obj) {
        var name = $('#new_rb_name').val();
        var resp = $('#respawn').val();
        var minus = $('#respawn_minus').val();
        var plus = $('#respawn_plus').val();
        var epique = $('#epique').val();
        var uid = $('#userID').text();
        
        if (name == "" || resp == "*" || minus == "*" || plus == "*" || epique == "эпик?") {
            obj.preventDefault();
            alert('Вы допустили ошибку при вводе. Попробуйте снова.');
        }
        else {
            obj.preventDefault();
            var myAfter = $('#after1, #after2');
            myAfter.after('<option>' + name + '</option>')
            myAfter.load('/service/require_files/without_refresh/add_rb.php', {new_rb_name: name, respawn: resp, respawn_minus: minus, respawn_plus: plus, epique: epique, uid: uid});
        }
        });
.load() обращается к файлу, который должен делать запись в базу:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
// скрипт добавления в БД только что введенного значения в поля селекта
 
// подключаем функции drupal
define('DRUPAL_ROOT', $_SERVER['DOCUMENT_ROOT']);
require_once DRUPAL_ROOT . '/includes/bootstrap.inc';
drupal_bootstrap(DRUPAL_BOOTSTRAP_FULL);
 
// функция добавления введенных данных в БД
function add_new_rb(){
 
    // делаем проверку на предмет существования такого имени
    $rb_exist = db_query("SELECT raid_name FROM {rb} WHERE uid = :uid", 
                                    array (':uid' => $_POST['uid'])
                            )->fetchCol();
                        
    foreach ($rb_exist as $exist){
        
        if ($exist == $_POST['new_rb_name']){
            return false;
            exit();
        }
    }
    
    if ($rb_exist){    
        
        $insert = db_insert('rb')
                        ->fields(array(
                            'uid' => $_POST['uid'],
                            'raid_name' => $_POST['new_rb_name'],
                            'respawn' => $_POST['respawn'],
                            'respawn_minus' => $_POST['respawn_minus'],
                            'respawn_plus' => $_POST['respawn_plus'],
                            'epique' => $_POST['epique'],))
                        ->execute();
        return true;
    }
}
 
// добавляем данные
add_new_rb($_POST['uid'], $_POST['new_rb_name'], $_POST['respawn'], $_POST['respawn_minus'], $_POST['respawn_plus'], $_POST['epique']);
задача: добавить только что введенные данные дополнительным option в 2 select`а, и произвести запись в БД без перезагрузки страницы.

preventDefault(), чтобы не было отправки формы пост`ом, - выполняется.
var myAfter = $('#after1, #after2'); myAfter.after('<option>' + name + '</option>') - выполняется.

а вот .load(), где должна быть запись в базу не срабатывает. может неверно передаю параметры?

PS чувствую, что делаю фигню, подскажите, как реализовать передачу моих
PHP
1
$_POST['uid'], $_POST['new_rb_name'], $_POST['respawn'], $_POST['respawn_minus'], $_POST['respawn_plus'], $_POST['epique']
без перезагрузки страницы. смотрю в книгу, - вижу...
0
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
19.06.2011, 12:03 4
 Комментарий модератора 
djvergon, старайтесь указывать ссылки на официальные источники.

lomvasil, Вы, наверно, не знаете, что jQuery это всего лишь библиотека написанная на том же JavaScript и в нее уже включен тот самый Ajax. Просто для работы с ним используется синтаксис jQuery.
0
lomvasil
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 25
19.06.2011, 15:02  [ТС] 5
пробовал уже

Javascript
1
2
3
4
5
6
7
$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success
  dataType: dataType
});
не могу найти примеров и описания возможности передачи нескольких переменных в php скрипт
0
romchiksoad
1951 / 796 / 89
Регистрация: 03.11.2009
Сообщений: 3,067
Записей в блоге: 2
19.06.2011, 16:44 6
lomvasil, это потому, что Вы не знаете как это реализуется на чистом JavaScript и Ajax. Так же было бы не плохо знать устройство HTTP-протокола и его методов передачи данных на сервер.
Т.к. я никогда не использовал jQuery, могу только предполагать, что в четвертой строке Вашего кода нужно передавать данные, которые отправляются на сервер. Если так, то тогда:
Javascript
1
2
3
4
5
6
7
$.ajax({
  type: 'POST',
  url: url,
  data: 'FirstName=Vasia&LastName=Pupkin',
  success: success
  dataType: dataType
});
На сервере в супер глобальный массив $_POST[] попадут два элемента:
PHP
1
$_POST['FirstName'] && $_POST['LastName'];
2
lomvasil
3 / 3 / 0
Регистрация: 14.12.2010
Сообщений: 25
19.06.2011, 17:22  [ТС] 7
да, уже сделал, спасибо, синтаксис такой:

Javascript
1
2
3
4
5
6
7
8
9
$.ajax({url: "/service/require_files/ajax/add_rb.php",
        type: 'POST',
        data: {new_rb_name : name, 
               respawn : resp, 
               respawn_minus : minus, 
               respawn_plus : plus, 
               epique : epique, 
               uid : uid}
       });
все работает
2
19.06.2011, 17:22
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2011, 17:22

Пример простейшего калькулятора на PHP без перезагрузки страницы (чистый Ajax, без jQuery и других библиотек)
Привет. Это, в каком-то смысле, продолжение креатива...

Голосование Без Перезагрузки Страницы
Имеется скрипт для голосования на PHP (+ БД MySQL), посмотреть результаты можно без перезагрузки...

Переключение без перезагрузки страницы
Здравствуйте! Страница на php. В ней выводится футер шапка, колонка и в теле страницы текст и с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru