Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MVC][JQuery] Problem z przekazaniem danych do kontrolera
PHPapprentice
post 7.05.2014, 18:11:50
Post #1





Grupa: Zarejestrowani
Postów: 12
Pomógł: 0
Dołączył: 6.03.2014

Ostrzeżenie: (0%)
-----


Witam

Wyczytałem w Internecie że Kontroler w MCV jest odpowiedzialny za odbieranie danych od użytkownika. Próbuje przesłać do kontrolera dane wpisane przez użytkonika w formularzu ale wywołuje się tylko na końcu funkcja error metody $.ajax. Może pokaże kod :

Kod
            $.ajax({
              type: 'POST',
              url: 'http://www.jakasstrona.pl/index.pl?strona=uzytkownicy',
              data: {                
                 login: hLogin_u,
                 nazwa_oddzialu: hNazwaOddzialu,
                 haslo: hPassword,
                 nazwa: hNazwa_u,
                 tylkozIp: hTylkoIP,
                 uprawnienia: myDataCheck
              },
              timeout: 5000,
              cache: false,
              success: function(msg){
                 alert('Zapytanie zakonczylo sie sukcesem! Zwrócone dane to '+msg);
              },
              beforeSend: function() {
                                      
                    $('#errorDiv').show();
                    
                    //alert('zaraz wysle sie ajax');    
              },
              error: function(){
                 $('#errorDiv').html('<p>Przepraszamy wystąpił błąd!</p>').show();    
                
                 //alert('error nastapil');              
              }
          });


Próbuje wywoływać funkcje print_r($_POST) żeby zobaczyc jak wygląda tablica POST po przekazaniu danych , jednak tablica zawsze jest pusta.

Myślę że kod jest prawidłowy oprócz znacznika "url".

Czy mógłby mi ktoś powiedzieć jaki mam wpisać url żebym mógł te dane przesłąć do kontrolera. Załóżmy że kontroler znajduje się w katalogu "/glowny/" i jego nazwa to kontroler.php.

Z góry dzięki za pomoc biggrin.gif
Go to the top of the page
+Quote Post
Turson
post 7.05.2014, 19:50:45
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

Ostrzeżenie: (0%)
-----


Nie wiemy jaki masz kontroler, czy akcja jest prawidłowa. Wchodząc bezpośrednio w link, który znajduje się w url pojawia się strona choćby pusta a nie błąd 404?
Go to the top of the page
+Quote Post
--phpapprentice--
post 8.05.2014, 12:46:28
Post #3





Goście







Cześć.

Po pierwsze dzięki za zainteresowanie smile.gif.

Po wpisaniu ten url , w przeglądarce wyświetla się albo strona do tego przeznaczona czyli np. uzytkownicy.php, albo wyswietla się panel logoania do panelu administracyjnego. To jest kiedy nie bylismy zalogowani czyli kiedy zmienne sesyjne nie były ustawione.

Co do kontrolera to kod jest poniżej :

Kod
class Controller // kontroler
{
    // składowe
    private $strona;
    private $model;
    private $widok;

    // konstruktor
    public function __construct()
    {
        $this->zaladujModel();
        $this->pobierzDane();
        $this->zaladujWidok();
        $this->uruchomWidok();
    }
    // załadowanie odpowiedniego modelu
    private function zaladujModel()
    {
        if (Autoryzacja::czyZalogowany() == false)
        {
            $this->strona = "logowanie";
        }
        else
        {
            if (!isset($_GET['strona']))
            {
                $this->strona = "glowna";
            }
            else
            {
                            $this->strona = Narzedzia::security_get($_GET[strona]);
                            global $baza;
                            $baza->execute("SELECT 1 FROM wiadomosci WHERE wiadomosci.pracownik in (1,8) AND
                            NOT EXISTS
                                (SELECT 1 FROM wiadomosci_przeczytania WHERE wiadomosc=id_wiadomosci AND
                                pracownik=$_SESSION[zalogowany_id_c9])");
                            if ($baza->count() > 0)
                            {
                                $this->strona = "glowna";
                            }                                
            }
                        
        }
    $dane = array("logowanie","glowna","dodajw","kalkulator","hasla","zarzadzaj","edycja","chat","skan","logi","ajax_logi","kalendarz","ajaxkalendarz","uzytkownicy");
    if (!in_array($this->strona,$dane))
    {
      $this->strona = "glowna";
    }
        $this->model = new $this->strona();
    }
    // załadowanie danych przez model
    private function pobierzDane()
    {
        $this->model->zaladujDane();
    }
    // załadowanie odpowiedniego widoku
    private function zaladujWidok()
    {
        $w = $this->strona."_widok";
        $this->widok = new $w($this->model);
    }
    // uruchomienie widoku
    private function uruchomWidok()
    {
        $this->widok->wyswietl();    
    }
  
}


Chciałbym dane z formularza przesłać do tego kontrolera. Nie myle się? Trzeba je przesłać do kontrolera ? Chciałbym że dane przesłane metodą $.ajax() jquery można było odebrać i zapisać w bazie danych.

Z tego co wyczytałem w Internecie to kontroler jest odpowiedzialny za odbieranie danych w MCV , więc pytamie brzmi jak przesłać dane z fomularza za pomoca tej funkcji $.ajax do kontrolera?

Jeśli w czymś się mylę poprawcie mnie smile.gif

Pozdrawiam
Go to the top of the page
+Quote Post
Pyton_000
post 8.05.2014, 13:01:07
Post #4





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


generalnie powinno zadziałać. Jak URL daj "/index.php?strona=urzytkownicy"

A jeżeli odpalisz taki URL to działa ?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.04.2024 - 11:37