За последние 24 часа нас посетили 201310 программистов и 2096 роботов. Сейчас ищут 1734 программиста ...

Как использовать AJAX в MVC соблюдая ООП

Тема в разделе "PHP для новичков", создана пользователем Guliver, 27 сен 2014.

  1. Guliver

    Guliver Новичок

    С нами с:
    26 июн 2013
    Сообщения:
    72
    Симпатии:
    0
    Добрый день! Пересаживаю свой сайт на MVC. Сейчас понадобилось добавить проверку занятости Email при регистрации. Раньше это было так в корневой папке сайта есть файл js/js_login_form_validate.js
    Код (Text):
    1. function check_email()
    2. {   var email = $('#email').val();
    3.     var error = $('#email_error');
    4.     var rturn = false;
    5.    
    6.     if (email == "")
    7.     {
    8.         error.show();  
    9.     }
    10.     else
    11.     {
    12.         if (validateEmail(email))
    13.         {
    14.                 $.ajax({
    15.                        type: 'POST',
    16.                        url: 'check_email.php',
    17.                        data: { email: email },
    18.                        async: false,
    19.                        cache : false,
    20.                        success: function(result) {
    21.                                  if (+result) {
    22.                                  rturn = true;
    23.                                  error.hide();
    24.                                  } else {
    25.                                  error.show().html('The email address you entered does not belong to any account. You can login using any email associated with your account. Make sure that it is typed correctly.');
    26.                                  }
    27.                                  }
    28.                         });
    29.         }
    30.         else
    31.         {
    32.             error.show().html("Please enter an email address in the following format info@lookingschools.com");  
    33.         }
    34.     }  
    35.     return rturn;
    36. }
    Ajax запросом мы отправляем email на проверку в файл check_email.php. Он также находился в корневой папке сайта и выглядел следующим образом:
    Код (Text):
    1. include 'db.php';
    2.  
    3. if (isset($_POST['email']))
    4. {
    5.     $res = mysql_query("select * from users where email = '".mysql_real_escape_string($_POST['email'])."' and is_active = 1");
    6.     if (mysql_num_rows($res) > 0)
    7.     {
    8.    
    9.     echo 1;
    10.    
    11.     } else {
    12.    
    13.     echo 0;
    14.    
    15.     }
    16.  
    17. }
    В связи с этим у меня возник вопрос как реализовать эту проверку на MVC, если можно , то с реальными примерами. Спасибо.
     
  2. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    А какая разница MVC или нет? Создай паблик метод в контроллере и отсылай туда аякс запрос.
     
  3. Guliver

    Guliver Новичок

    С нами с:
    26 июн 2013
    Сообщения:
    72
    Симпатии:
    0
    Подскажите, что мне указать вместо
    Код (Text):
    1.  url: 'check_email.php',
    ???
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    А в чём проблема? Делаете в контроллере, отвечающем за эту форму, акцию check_email, в которой делаете проверку. На Kohana (я пишу на этом фреймворке) будет выглядеть примерно так:
    Код (PHP):
    1. class Controller_User extends Controller {
    2.      public function action_checkEmail() {
    3.            $user_count = ORM::factory("User")->where("email", "=", $_REQUEST["email"])->count_all();
    4.            $valid = (int) ($user_count > 0);
    5.            die("$valid");
    6.     }
    7. }
    И соответственно ваш JavaScript будет выглядеть так:
    Код (Text):
    1.  
    2. function check_email()
    3. {   var email = $('#email').val();
    4.    var error = $('#email_error');
    5.    var rturn = false;
    6.    
    7.     if (email == "")
    8.     {
    9.         error.show();  
    10.     }
    11.     else
    12.     {
    13.         if (validateEmail(email))
    14.         {
    15.             $.ajax({
    16.                     type: 'POST',
    17.                     url: '/user/checkEmail',
    18.                     data: { email: email },
    19.                     async: false,
    20.                   cache : false,
    21.                     success: function(result) {
    22.                              if (+result) {
    23.                             rturn = true;
    24.                             error.hide();
    25.                              } else {
    26.                             error.show().html('The email address you entered does not belong to any account. You can login using any email associated with your account. Make sure that it is typed correctly.');
    27.                              }
    28.                               }
    29.                       });
    30.         }
    31.         else
    32.         {
    33.             error.show().html("Please enter an email address in the following format info@lookingschools.com");  
    34.         }
    35.     }  
    36.    return rturn;
    37. }
     
  5. smitt

    smitt Старожил

    С нами с:
    3 янв 2012
    Сообщения:
    3.166
    Симпатии:
    65
    Скоро у меня от таких вопросов действительно телепатия появится.
    Хз. как назовешь туда и отправляй
    /controller/method
     
  6. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Задачу стоит развернуть: как использовать AJAX в ООП соблюдая MVC
     
  7. Ke1eth

    Ke1eth Активный пользователь

    С нами с:
    16 мар 2012
    Сообщения:
    1.073
    Симпатии:
    11
    Адрес:
    заблудилса
    как использовать MVC в ООП соблюдая AJAX
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Шаблон пустой + заголовок (опционально)
    Больше ничем Ajax запрос от страницы не отличается. Это тот же текст.