AJAX

Тема в разделе "Программирование", создана пользователем zhest, 07.09.2009.

  1. Offline

    zhest Недавно здесь

    Регистрация:
    05.09.2009
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    Привет всем знающим!!! подскажите на простом примере как использовать встроеный в джумлу ajax?
    я собираюсь написать компонент(по работе надо) работы с базой данных, надо реализовать ввод данных в таблицу без нажатия кнопок, тоесть то что пользователь написал в ячейку на форме должно упасть в базу после того как перейдешь на другую ячейку без всяких кнопок!!!
     
  2.  
  3. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    Код (html):
    1. <input type="text" id="myID" value="">


    Код (CODE):
    1. $('myID').addEvent('blur', function(){
    2.     var myRequest = new Request(
    3.     {
    4.         url: 'getData.php',
    5.         method: 'get',
    6.         onSuccess: function(responseText, responseXML)
    7.         {
    8.            alert(responseText);
    9.          }
    10.     });
    11. });


    т.е. описываем событие и на это событие вешаем нужную вам функцию )

    З,Ы,: писал на коленке, так что могут быть ошибки

    А вообще все доки по мутулсу можно найти ТУТ
     
  4. Offline

    zhest Недавно здесь

    Регистрация:
    05.09.2009
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской

    Спасибо что откликнулся!!!
    попробую замутить, если что обращусь!!!! :)
     
  5. Offline

    paranoik Недавно здесь

    Регистрация:
    07.05.2008
    Сообщения:
    20
    Симпатии:
    1
    Пол:
    Мужской
    $('myID').addEvent('blur'...

    Лучче не 'blur' а 'change', зачем нам перезаписывать базу тем-же самым если фокус просто случайно попадет на инпут и пропадет?
     
  6. Offline

    zhest Недавно здесь

    Регистрация:
    05.09.2009
    Сообщения:
    3
    Симпатии:
    0
    Пол:
    Мужской
    что-то я невоткну как все это реализовать!!! :(
    если есть конкретный пример буду признателен!!! :[
     
  7. Offline

    paranoik Недавно здесь

    Регистрация:
    07.05.2008
    Сообщения:
    20
    Симпатии:
    1
    Пол:
    Мужской
    getdata.php - это скрипт который будет записывать в твою базу нужные данные.
    его, соответственно нужно написать :), ну как обычный скрипт,
    только желательно в начале добавить в него нужные хидеры:
    Код (PHP):
    1. <?php
    2. header("Content-type: text/html; charset=utf-8");
    3. header("Cache-Control: no-store, no-cache, must-revalidate");
    4. header("Cache-Control: post-check=0, pre-check=0", false);
    5. дальше настройка соединения с БД, нужные запросы на сохранение/обновление;
    6. вывод результата запроса: успешно/не удалось сохранить
    7.  
    8. ?>



    С MooTools не разбирался, приведу пример на jQuery, будет повод поразмышлять заодно :) :

    есть твоя форма
    Код (html):
    1. <div id='ajax_result' style='display:none'></div>
    2. <input class='inputbox ajax_store' name='value1' type='text' /><br />
    3. <textarea class='textbox ajax_store' name='value2'> </textarea> и т.д.


    пишешь скрипт после этой формы (пример на jQuery, в MooTools будет похоже), ajax_store - произвольное имя класса - селектор нужных элементов
    Код (CODE):
    1. <script language='javascript' type='text/javascript'>
    2. $(".ajax_store").bind("change",function(){
    3.       $("div#ajax_result").html("").hide();
    4.      $("div#ajax_result").load("getdata.php?value="+($(this).val() || $(this).html())+"&param_name="+$(this).attr("name"),function(){
    5.      $("div#ajax_result").show();
    6.      });
    7. });
    8. </script>

    Т.е. тем самым ты должен передать значение и имя параметра скрипту php и вернуть результат сохранения на страницу.
    Все по-моему просто.
    И не забудь что разные браузеры по разному передают get запрос (разная кодировка), по-этому возможно в getdata.php потребуется хорошая функция iconv :)
     
    Последнее редактирование: 11.09.2009
    Fanamura нравится это.
  8. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    paranoik,
    если ты повещаешь на CHANGE то запись будет производиться после ввода каждого символа, на пустые поля и левые символы можно поставить фильтры, так что лучше использовать BLUR.


    zhest, подробные пример напишу завтра вечером т.к. пиво, которое было выпито за вечер, не позволяет мне сейчас думать )
     
  9. Offline

    paranoik Недавно здесь

    Регистрация:
    07.05.2008
    Сообщения:
    20
    Симпатии:
    1
    Пол:
    Мужской
    НЕТ. Change срабатывает лишь после ухода с поля. Ну у меня то все работает как надо, чо спорить то.
    А блур - это и в африке блур. Не предназначен он для этого. Отделяйте мух от котлет.
     
  10. toorr2p
    Offline

    toorr2p Недавно здесь

    Регистрация:
    04.09.2009
    Сообщения:
    37
    Симпатии:
    2
    Пол:
    Мужской
    У меня от тоже вопросик по Ajax с использованием Jquery - задача такая на странице будет несколько ссылок и при клике на каждой нужно чтоб в функцию передавался параметр id который передается в запросе скрипту, а он на основе этого id делает выборку из БД. Тоесть непонятно как мне передать от ссылки в функцию значение, событие то я присвоил к сылке через ее id но не писать же мне одну и туже функцию с разными id в запросе, десять раз под 10 ссылок :)) !!!

    Подскажите как быть?
    Вот вариант когда id жестко прописан в параметр функции - Ajax:

    Код (html):
    1. <html>
    2. <head>
    3. <meta http-equiv="" content="text/html; charset=iso-8859-1" />
    4. <title>fgfghfg</title>
    5. <meta http-equiv="" content="text/html; charset=iso-8859-1" />
    6. <script type="text/javascript" src="jquery-1.3.2.js"></script>
    7. <script type="text/javascript">
    8. $(document).ready(function(){
    9.     $("#makeRequest").click(function(){
    10.    
    11.         $.get("script.php", { id: "1" }, function(arr_art){
    12.         document.getElementById('preview').innerHTML = ''+ arr_art;
    13.         });
    14.    
    15.     });
    16. });
    17. </script>
    18.  
    19. </head>
    20.  
    21. <body>
    22.     <div id="preview"></div>
    23.     <a href="#" id="makeRequest"> Clik me </a>
    24. </body>
    25. </html>
     
  11. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    <a href="index.php?myparam=gg&id=1" name="myName">Link</a>

    т.е. Вы в ссылке передаете нужные Вам параметры, обрабатываете событие нажатия на ссылку и на сервере получаете параметры )

    Код (CODE):
    1. $(document).ready(function(){
    2.     $("a").click(function()
    3.         {
    4.             if($(this).attr("name") == "myName")
    5.         $.ajax
    6.             ({
    7.                 type: "POST",
    8.                 url: $(this).attr("href"),
    9.                 cache: false,
    10.                     success: function(msg)
    11.                     {
    12.                     $("#preview").html(msg);
    13.                 }
    14.             });
    15.                 return false;
    16.  
    17.     });
    18. });
     
  12. Offline

    paranoik Недавно здесь

    Регистрация:
    07.05.2008
    Сообщения:
    20
    Симпатии:
    1
    Пол:
    Мужской
    нафига так длинно. Есть же простой метод load...
    Вот тоже самое, только короче:
    Код (CODE):
    1. $(document).ready(function(){
    2.     $("a[name='myName']").click(function()
    3.         {
    4.       $("#preview").load($(this).attr("href"));
    5.           return false;
    6.     });
    7. });

    Вот и всё :)
     
  13. Offline

    pharaoh Недавно здесь

    Регистрация:
    15.06.2009
    Сообщения:
    15
    Симпатии:
    0
    Пол:
    Мужской
    А как этот файл вписать в саму джумлу, а точнее в модуль? Есть статичный работающий php файл. Но вот в модуль вписать его не получается (к базе подключается при первом вызове, а когда идет вызов самого себя через аякс, не работает). У меня 3 селекта (1 берется из базы сразу, 2 и 3 через аякс). На статическом файле работает, при вставке в модуль - только 1 селект выводит.

    Конкретнее тут (чтоб не дублировать) http://joomlaforum.ru/index.php/topic,81645.0.html
     
    Последнее редактирование: 07.10.2009
  14. Offline

    paranoik Недавно здесь

    Регистрация:
    07.05.2008
    Сообщения:
    20
    Симпатии:
    1
    Пол:
    Мужской
    Да положи его куда хош!!! Хоть в корень (правильней - в папку с модулем).
    Только не забываем про безопасность - проверяем $_SERVER['HTTP_REFERER'] и т.д.
     
  15. Dead Krolik
    Offline

    Dead Krolik специалист

    Регистрация:
    13.04.2007
    Сообщения:
    3 688
    Симпатии:
    101
    Пол:
    Мужской
    Оффтопик (не в тему) - жми сюда!
     
  16. toorr2p
    Offline

    toorr2p Недавно здесь

    Регистрация:
    04.09.2009
    Сообщения:
    37
    Симпатии:
    2
    Пол:
    Мужской
    Вот тут почитайте http://joomlaforum.ru/index.php/topic,78202.0/topicseen.html снизу на верх
     
  17. Offline

    paranoik Недавно здесь

    Регистрация:
    07.05.2008
    Сообщения:
    20
    Симпатии:
    1
    Пол:
    Мужской
    Почему же нет? Передадим гетом referrer= "" и сравним потом с $_SERVER['HTTP_REFERER'] получим ТРУ :)
    Только это не единственная и далеко не главная мера по безопасности должна быть.
    Надеюсь, знаете какие ;)
     
  18. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    до Вас пытаются донести, что в некоторых браузерах можно отключить использование этого параметра ))) как тогда быть ? )
     
  19. Offline

    paranoik Недавно здесь

    Регистрация:
    07.05.2008
    Сообщения:
    20
    Симпатии:
    1
    Пол:
    Мужской
    ->
    dlya teh, kto v tanke:
    otkluchennii v brausere referrer ne pomeshaet zaprosit $_SERVER['HTTP_REFERER'], on budet == ""
    + pri otkluchennom mi postavim &referrer = ""
    t.e. dlya nas glavnoe, chtobi ($_SERVER['HTTP_REFERER'] || "") == ($_GET['referrer'] || "").

    elementarnii i neosnovnoi moment,... ne dumal chto voprosi vozniknut...

    teper ponyatno???
     
  20. omfgpanda
    Offline

    omfgpanda специалист

    Регистрация:
    22.01.2008
    Сообщения:
    673
    Симпатии:
    53
    Пол:
    Мужской
    если вы собрались дублировать рефер, то вопросов нет ))) только не пишите больше транслитом )
     
  21. Offline

    paranoik Недавно здесь

    Регистрация:
    07.05.2008
    Сообщения:
    20
    Симпатии:
    1
    Пол:
    Мужской
    Оффтопик (не в тему) - жми сюда!
     

Поделиться этой страницей

Загрузка...