• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

question-closed Ajax nie wykonuje funkcji

0 głosów
213 wizyt
pytanie zadane 13 maja 2022 w PHP przez AnimaVillis Stary wyjadacz (13,410 p.)
zamknięte 15 maja 2022 przez AnimaVillis

Cześć!

Jest sobie ajax, php, mysql, ale po przeniesieniu na cyberfolks przestał działać.

Funkcję wywołuję tak:

weryfikacja.akceptacja("'.$w['hash'].'")

Następnie kod weryfikacje
 

$(document).ready(function () {

    var table = $("#Tweryfikacje").DataTable({
        dom: "lBfrtip",
        buttons: ["copy", "excel", "pdf", "print", "colvis"],
        language: {
            url: "js/Polish.json",
        },
        lengthChange: true,
    });
    setTimeout(function () {
        korektaJezyka(); $(".hidden").css("visibility", "visible");
    }, 100);
    
 });

Oraz akceptacja:

function akceptacja()
{
    global $db;
    if (isset($_POST['hash'])){
        die('widget.blad("Błąd","Brak id ogłoszenia")');
    }
    $hash = $_POST['hash'];
    $o = $db->query("select * from ogloszenia where hash='" . $hash . "'")->row;
    $user = $db->query("select email,powiadomienia from uzytkownicy where id='" . $o['userid'] . "'")->row;
    $foto = pobierztmp($hash);
    array_map('unlink', glob(IMGORGPATH . $hash . "_*.jpg"));
    foreach ($foto as $f) {
        rename(IMGTMPPATH . $f, IMGORGPATH . $f);
    }
    przywroc_foto_org($hash, true);
    $db->query("update ogloszenia set weryfikacja='1'where hash='" . $hash . "'");
    if ($db->countAffected() == 0) {
        die('widget.blad("Błąd","Brak id ogłoszenia")');
    }
    ulogi("Akceptacja ogłoszenia: " . $hash, $o['userid'], $o['id']);

    if ($o['userid'] !== "1" && $user['powiadomienia'] == 1) {
        $dane['email'] = $user['email'];
        $dane['od'] = MAILBOX_LOGIN;
        $dane['temat'] = "Twoje ogłoszenie zostało zaakceptowane";
        $dane['tresc'] = "Ogłoszenie " . $hash . " zostało zweryfikowane i jest już widoczne.";
        $dane['nazwaOd'] = "Administrator - " . MAILBOX_NAZWA;
        $adm = new mailer;
        $adm->dane = $dane;
        $adm->sendMail();
    }

    die('widget.info("Zrobione","Ogłoszenie zaakceptowane");location.reload();');
}

I mam jeszcze php:

function akceptuj($hash)
{
    global $blad, $o, $imageformats, $videoformats;
    $tmpdir = IMGTMPPATH;
    $r = array();
    $zdjecia = array();
    $dh = @opendir($tmpdir);
    if ($dh) {
        while (($fname = readdir($dh)) !== false) {
            if (strstr($fname, $hash)) {
                array_push($r, $fname);
            }
        }
        closedir($dh);
    }
    sort($r);
    if (!empty($r))
        usunfotoorg($hash);
    $zdjecia = $r;

    foreach ($r as $plik) {
        $roz = explode('.', $plik);
        $roz = end($roz);
        if (in_array($roz, $videoformats)) {
            if (!copy(IMGTMPPATH . $plik, IMGORGPATH . $plik))
                logi("Blad kopiowania", IMGTMPPATH . $plik . " - " . IMGORGPATH . $plik);
            if (!file_exists(IMGORGPATH . $plik)) {
                $blad .= "Brak pliku video - " . IMGORGPATH . $plik . ";";
                continue;
            }
            rename(IMGTMPPATH . $plik, VIDEOSRCPATH . $plik);
            if (!file_exists(VIDEOSRCPATH . $plik))
                $blad .= "Brak pliku video - " . VIDEOSRCPATH . $plik . ";";
            continue;
        }

        if (in_array($roz, $imageformats)) {

            if (!copy(IMGTMPPATH . $plik, IMGORGPATH . $plik))
                logi("Blad kopiowania", IMGTMPPATH . $plik . " - " . IMGORGPATH . $plik);
            if (!file_exists(IMGORGPATH . $plik)) {
                $blad .= "Brak pliku foto - " . IMGORGPATH . $plik . ";";
                continue;
            }
            skaluj($tmpdir, $plik, 450, 600);
            if (!file_exists(IMGSRCPATH450x600 . $plik)) {
                $blad .= "Brak pliku foto - " . IMGSRCPATH450x600 . $plik . ";";
                continue;
            }
            znakwodny(IMGSRCPATH450x600 . $plik);
            skaluj(IMGSRCPATH450x600, $plik, 300, 400);
            if (!file_exists(IMGSRCPATH300x400 . $plik))
                $blad .= "Brak pliku foto - " . IMGSRCPATH300x400 . $plik . ";";
            skalujdoh100(IMGSRCPATH450x600, $plik);
            if (!file_exists(IMGSRCPATH75x100 . $plik))
                $blad .= "Brak pliku foto - " . IMGSRCPATH75x100 . $plik . ";";
        } else {
            $blad .= "Nierozpoznany plik - " . $plik . ";";
        }
    }

    if ($blad == "")
        foreach ($r as $plik) {
            copy($tmpdir . $plik, IMGORGPATH . $plik);
            if (!file_exists(IMGORGPATH . $plik))
                $blad .= "Brak pliku foto - " . IMGORGPATH . $plik . ";";
        }

    if ($blad == "") {
        foreach ($r as $plik){
         if(file_exists($tmpdir . $plik))
            unlink($tmpdir . $plik);
        }

        if (mysql_polecenie("update ogloszenia set weryfikacja='1',data_weryfikacji=now(),status=if(status='0','1',status) where hash='" . $hash . "'")) {
            ulogi("Akceptacja ogłoszenia: " . $hash, $o['userid'], $o['id']);
            if ($o['userid'] !== "1")
                wiadomosc($o['userid'], "Twoje ogłoszenie zostało zaakceptowane", "Ogłoszenie " . $hash . " zostało zweryfikowane i jest już widoczne.");
            return;
        }
        logi("Błąd mysql przy akceptacji ogloszenia: " . $hash, "akceptacja.php");
        return "Błąd mysql";
    } else {
        logi("Błąd przy akceptacji ogloszenia: " . $hash . " - " . $blad, "akceptacja.php");
        return $blad;
    }
}

Ogólnie całość wygląda jakby ajaxa nie wykonywało, hash przekazuje normalnie.

Niestety, ale nie działa a ja zgłupiałem.
Jakieś podpowiedzi gdzie szukać? Consola błędów nie wyrzuca...

komentarz zamknięcia: Kolega VBService wyczerpał temat.
komentarz 13 maja 2022 przez ScriptyChris Mędrzec (190,190 p.)
Sprawdziłeś w zakładce Network devtoolsów przeglądarki, czy może request wisi na statusie "pending", czy ostatecznie response przychodzi - jeśli tak, to z jakim kodem statusu HTTP?

https://developer.chrome.com/docs/devtools/network/#load

https://developer.chrome.com/docs/devtools/network/reference/#headers
komentarz 14 maja 2022 przez AnimaVillis Stary wyjadacz (13,410 p.)
edycja 14 maja 2022 przez AnimaVillis

Nie mogę udzielić normalnej odpowiedzi w komentarzu.

 

Okej, mam odpowiedź, że

if (isset($_POST['hash'])){
        die('widget.blad("Błąd","Brak id ogłoszenia 1")');
    }

Tylko dlaczego?

komentarz 14 maja 2022 przez VBService Ekspert (256,600 p.)

A co to jest?

Sprawdzasz czy istnieje zmienna $_POST['hash']

jeżeli istnieje kończysz działanie skryptu - die(...)

    if (isset($_POST['hash'])){
        die('widget.blad("Błąd","Brak id ogłoszenia")');
    }
    $hash = $_POST['hash'];

linie poniżej próbujesz pobrać wartość ze zmiennej $_POST['hash']

nie powinno być czasem

if (! isset($_POST['hash'])) { ...

 

1
komentarz 15 maja 2022 przez AnimaVillis Stary wyjadacz (13,410 p.)
ehh, wiedziałem, że to głupota jakaś musi być!

Dzięki wielkie!

1 odpowiedź

0 głosów
odpowiedź 14 maja 2022 przez rafal.budzis Szeryf (85,700 p.)

Dodaj w pierwszych linijkach kodu PHP 

error_reporting(E_ALL);
ini_set('display_errors', 1);

Może ustawiłeś złą wersję PHP? Może też gdzieś odwołujesz się do klucza w $_SERVER który u CF nie istnieje. CF nie używa Apache więc $_SERVER się nieco rożni. 

Gdy już ustawisz to zobacz w zakładce network jaki masz błąd w PHP

komentarz 14 maja 2022 przez AnimaVillis Stary wyjadacz (13,410 p.)
edycja 14 maja 2022 przez AnimaVillis

Mam odpowiedź taką, że brak id.
Tym bardziej, że sam podglądam w HTMLu daje wartość:
 

weryfikacja.akceptacja("3267287656652");

Tylko dlaczego?
komentarz 14 maja 2022 przez rafal.budzis Szeryf (85,700 p.)
Wklej dokładny błąd z PHP skoro w innym srodowisku działa trzeba znaleźć różnice.

Podobne pytania

0 głosów
2 odpowiedzi 463 wizyt
0 głosów
1 odpowiedź 247 wizyt
0 głosów
1 odpowiedź 178 wizyt
pytanie zadane 23 lutego 2020 w JavaScript przez Bartx Bywalec (2,120 p.)

93,424 zapytań

142,421 odpowiedzi

322,646 komentarzy

62,785 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...