Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][AJAX] odwolanie do pliku php poprzez ajax
Forum PHP.pl > Forum > Przedszkole
mas
Witam
mam taki uklad katlogow na serwerze



w folderze js znajduje sie scrypt
Kod
$().ready(function(){
    $('#formularzGlowny').validate({
        rules: {
            imie:{
                required:true,
                minlength:10
            },      
            email:{
                required:true,
                email:true
            },
            temat:{
                required:true,
                minlength:2
            },
            wiadomosc:{
                required:true,
                minlength:10
            }
                      
        },
        messages:{
            imie:{
                required: 'Pole wymgane',
                minlength: 'Proszę podać minimum 10 znaków'
            },  
            temat:{
                required: 'Pole wymgane',
                minlength: 'Proszę podać minimum 2 znaki'
            },  
            wiadomosc:{
                required:'Pole wymagane',
                minlength:'Proszę podać minimum 10 znaków'
            },
            email:'Proszę wpisać prawidłowy adres e-mail'
        },
        submitHandler: function(){
            var imie=$("#imieGlowny").val();
            var email=$("#emailGlowny").val();
            var temat=$("#tematGlowny").val();
            var wiadomosc=$("#wiadomoscGlowny").val();
            
            $.ajax({
                url : '../classes/send_mail.php',
                type : 'POST',
                data : {imie:'imie',nazwisko:'nazwisko',email:'email',temat:'temat',wiadomosc:'wiadomosc'},
                
                beforeSend:function(){
                    $("input[@type=text]:disabled");
                    $("#formularzGlowny").animate({
                        opacity:0.5
                    });
                  
                },
                success: function(data){
                    alert(data);
                    $("#formularzGlowny").animate({
                        opacity:1
                    });
                    
                    $(':input',"#formularzGlowny").not(':submit').val('');
                },
                error: function(jqXHR, exception) {
                    if (jqXHR.status === 0) {
                        alert('Not connect.\n Verify Network.');
                    } else if (jqXHR.status == 404) {
                        alert('Requested page not found. [404]');
                    } else if (jqXHR.status == 500) {
                        alert('Internal Server Error [500].');
                    } else if (exception === 'parsererror') {
                        alert('Requested JSON parse failed.');
                    } else if (exception === 'timeout') {
                        alert('Time out error.');
                    } else if (exception === 'abort') {
                        alert('Ajax request aborted.');
                    } else {
                        alert('Uncaught Error.\n' + jqXHR.responseText);
                    }
                }
            });
            return false;      
        }

    });
});


w "public_html" znjduje sie index.php ktory laduje plik kontakt.php z "templates". W kontakt.php dodaje z folderu js w/w scrypt. Problem mam z fragmentem ajaxa gdzie podaje url scryptu jaki ma sie wykonac czyli "send_mail.php". "send_mail.php" znjduje sie w folderze classes.
Mam problem z okresleniem sciezki do pliku. Wywala bląd "Requested page not found. [404]"
CuteOne
Jeżeli pliki (np. ten send_mail.php) znajdują się poza public_html należy użyć routera + regułkę przekierowującą na index.php w .htaccess
- google -> php router przykład
- google -> .htacces rewrite przykład
d3ut3r
Dodam tylko, że w przypadku twojego skryptu linia:

[JAVASCRIPT] pobierz, plaintext
  1. data : {imie:'imie',nazwisko:'nazwisko',email:'email',temat:'temat',wiadomosc:'wiadomosc'}
[JAVASCRIPT] pobierz, plaintext


powinna wyglądać
[JAVASCRIPT] pobierz, plaintext
  1. data : {imie:imie,nazwisko:nazwisko,email:email,temat:temat,wiadomosc:wiadomosc}
[JAVASCRIPT] pobierz, plaintext


w twoim przypadku nie wysyłasz zawartości zmiennych tylko ciągi tekstowe.
mas
pomijajac wysylane dane...inaczej nie da sie wyjsc z linkiem ponizej "public_html" questionmark.gif?
CuteOne
Inaczej się nie da, możesz utworzyć dodatkowy plik na poziomie index.php np. ajax.php i zrobić dla niego kilka regułek w .htaccess

a w samym pliku zwykły include
  1. $modules = array(
  2. 'news' => 'class/inc/news.php',
  3. 'coments' => 'template/coments.php'
  4. );
  5.  
  6. $page = strtolower($_GET['page']);
  7.  
  8. if(isset($modules[$page])) {
  9.  
  10. include $modules[$page];
  11. }

mas
np.jakich regulek?questionmark.gif sorry ale jestem w tym zielony....
CuteOne
google -> mod_rewrite przykłady
mas
ok tylko co maja dac te regulki akurat w moim przykladzie?questionmark.gif

jezeli w pliku ajax.php includuje plik poza public_html to dziala, tylko nie moge w ajax.php wybrac jaki plik mam includowac poniewaz w zmienne przesylam juz za pomocą $_POST
CuteOne
Ok mały przykład z twojej funkcji

tablica $_GET pozostanie pusta
[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. url : '../classes/send_mail.php',
  3. type : 'POST',
  4. data : {imie:'imie',nazwisko:'nazwisko',email:'email',temat:'temat',wiadomosc:'wiadomosc'},
[JAVASCRIPT] pobierz, plaintext


tablica $_GET nie będzie pusta
[JAVASCRIPT] pobierz, plaintext
  1. $.ajax({
  2. url : '../classes/send_mail.php?page=new&id=1&zmienna=eufe',
  3. type : 'POST',
  4. data : {imie:'imie',nazwisko:'nazwisko',email:'email',temat:'temat',wiadomosc:'wiadomosc'},
[JAVASCRIPT] pobierz, plaintext
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.