nie dzialajacy ajax w laravel 5.7

Odpowiedz Nowy wątek
2019-01-06 16:15
Jan Kowal
0

Hej
czy ktos moze mi powiedziec dlaczego to nie dziala , kod javascript

https://pastebin.pl/view/11a0f749

i kod php

https://pastebin.pl/view/f0de60be

Pozostało 580 znaków

2019-01-06 17:07
0

co to znaczy "nie działa" ?

Pozostało 580 znaków

2019-01-06 18:20
Jan Kowal
0

Kod PHP nie zwraca żadnej wartości albo kod javascriptowy nie wyświetla na stronie , czyli krótko mówiąc gdzieś jest blad

Pozostało 580 znaków

2019-01-06 18:51
0
Jan Kowal napisał(a):

Kod PHP nie zwraca żadnej wartości albo kod javascriptowy nie wyświetla na stronie , czyli krótko mówiąc gdzieś jest blad

Od kiedy to tak wygląda odwoływanie się do bazy w laravelu o.O
W konsoli deweloperskiej (chrome) js nie zwraca żadnych błędów?
Poza tym w phpie masz błąd linia 9.

    $sql = 'SELECT * FROM videos where title LIKE "$title%"';

Pozostało 580 znaków

2019-01-06 19:13
Jan Kowal
0

Tak widziałem zrobiony Ajax w tutorialu do 5.2 . Składnia SQL nie jest z laravela bo to nie jest controller , ot zwykły plik PHP . Moje pytanie jest takie czy taka konstrukcja czyli widok->plik HTML nie controller jest dopuszczalna , czy w takim wypadku też trzeba używać routa i czy ten przykład ma szansę zadziałać i co należy poprawić ?

Pozostało 580 znaków

2019-01-06 19:51
1

Musisz się zdecydować czy piszesz w laravelu czy nie to po pierwsze, a po drugie musisz ustawić cors

CORS tylko w wypadku gdy aplikacja znajduje się na innym serwerze niż API. W ogóle CORS to jakieś nieporozumienie. Nie rozumiem po co powstała ta polityka bezpieczeństwa skoro jeżeli już ktoś chce hackować to może użyć normalnego klienta HTTP, znając endpointa i tak zrobi potencjalnie niebezpieczne zapytanie. Z resztą nawet w Fetch API można pominąć nagłówki CORS dla prostych zapytań GET gdy Content-Type to np. text/plain. Idea jaka stoi za CORS jest niezrozumiała do końca chyba nie tylko dla mnie skoro psioczą na nią nawet znani programiści. - siloam 2019-01-06 20:03
@siloam: nie, wystarczy inna subdomena/port. ip może być to samo a kod może leżeć na tym samym serwerze. - mr_jaro 2019-01-06 20:06

Pozostało 580 znaków

2019-01-06 20:16
0

Tak to nie ma prawa działać.
Musisz ustawić routing w routs.php
Musisz mieć jakieś kontrolery etc.
Żeby działał AJAX musisz przekazywać token CSRF.
Zobacz sobie najlepiej cały tutorial np. coś takiego:

Ma prawo działać. Kwestia tylko czy będzie to zgodnie z przyjętymi ogólnie standardami :) - leonpro778 2019-01-07 11:17
No ale bez ustawień w routes powinien dostać 404 czy UPS page not found. Oczywiście można wszystko ominąć ale to pisanie czystego skryptu bez wykorzystania Laravel, a autor chyba chciał ten framework wykorzystać. Szczerze to nigdy nie próbowałem omijać wszystkich opcji żeby zobaczyć jak dużo potrzeba żeby popsuć ale chyba nie wydaje się to łatwe. - jurek1980 2019-01-07 21:01
To czy do obsługi ajax' zostanie użyte api laravela czy czysty php to jedno a to czy powinno tak się robić to drugie. Niżej też napisałem, że użyłbym laravela do obsługi requestów ahaxowych ale nie zmienia to faktu, że skrypt z "czystym php" również zadziała (o ile będzie dobrze napisany) :-) - leonpro778 2019-01-07 21:34

Pozostało 580 znaków

2019-01-07 11:12
1
Jan Kowal napisał(a):

Składnia SQL nie jest z laravela bo to nie jest controller , ot zwykły plik PHP . Moje pytanie jest takie czy taka konstrukcja czyli widok->plik HTML nie controller jest dopuszczalna , czy w takim wypadku też trzeba używać routa i czy ten przykład ma szansę zadziałać i co należy poprawić ?

Ja napiszę tak. Korzystając z Laravela korzystaj z Laravela i API jakie możesz stworzyć dzięki niemu. To raz. Odnośnie Twojego skryptu to PRAWDOPODOBNIE on działa tylko w żaden sposób nie przekazujesz tych danych z powrotem do widoku.

Zrób chociażby coś takiego:

<?php
        define (DB_USER, "root");
        define (DB_PASSWORD, "");
        define (DB_DATABASE, "laravel1");
        define (DB_HOST, "localhost");
        $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);

        $title  = $_POST["title"];  
        $sql = 'SELECT * FROM videos where title LIKE "$title%"';
        $result = $mysqli->query($sql);

        while($row = $result->fetch_assoc()){
            $json[] = $row;
        }
      $data['data'] = $json;
      var_dump($data);

i zobacz co Ci zwróci skrypt w odpowiedzi. Ten Twój kod zgaduję ma zwracać JSON? Jeżeli tak to nie zwróci JSON bo dane w $data nie są w formacie JSON.

I jeszcze szybka podpowiedź: https://stackoverflow.com/que[...]convert-mysqli-result-to-json

edytowany 3x, ostatnio: leonpro778, 2019-01-07 11:18

Pozostało 580 znaków

2019-01-13 18:17
0
Jan Kowal napisał(a):

Hej
czy ktos moze mi powiedziec dlaczego to nie dziala , kod javascript

https://pastebin.pl/view/11a0f749

i kod php

https://pastebin.pl/view/f0de60be

Tak jak jurek ci napisał Musisz ustawić routing w routs.php, Czy udało ci się rozwiązać problem bo jestem ciekawy, kiedyś robiłem coś podobnego, ale nie znalazłem rozwiązania.


Czy się leży czy się stoi....

Pozostało 580 znaków

2019-01-13 19:10
0

Ale co dla was jest problemem w zapytaniu ajax w laravelu, że nie możecie znaleźć rozwiązania?
Jeżeli routing jest poprawnie zrobiony, to wystarczy utworzyć POPRAWNĄ ścieżkę.
Tutaj mogę polecić bibliotekę dla nazwanych ścieżek - https://github.com/tightenco/ziggy która pozwala na generowanie ścieżek tak jak to się robi za pomocą helper'a laravela, natomiast nie ma zupełnie żadnego problemu by się odwołać do tego poprzez podanie po prostu linku samemu.
Byleby to do czego się odwołujemy było zadeklarowane w pliku routes/web.php, może to być też zwykła funkcja anonimowa gdzie na końcu dajemy return response()->json($data);

edytowany 2x, ostatnio: mefsh, 2019-01-14 02:05
ajaxowe sprawy to raczej routes/api.php - mr_jaro 2019-02-04 20:39
Niezależnie od tego czy doda się to do api.php, cz web.php, to ajax zadziała (oczywiście jest różnica w używanym middleware i trzeba o tym pamiętać). Ja zawsze robiłem ajaxa (oczywiście wewnątrz tej jednej aplikacji) pod web'em, nie traktowałem tego jako api, w końcu to nadal użytek "własny" wewnątrz tej jednej aplikacji i sesje są zachowane, tak samo jak i użycie csrf nie jest problemem (być może to mój błąd w kwestii design'u, więc poszukam informacji na ten temat na przyszłość :) ). - mefsh 2019-02-04 21:49
middlewary nie są problemem, kwestia konfiguracji. Ja natomiast podchodze do wszystkiego w ten sposób, że pod web wrzucam tylko rzeczy które działają "z przeładowaniem", jeśli coś zwraca jsona to już musi trafić pod api. łatwiej się odnaleźć we wszystkim. Przy okazji tak samo dziele kontrolery. - mr_jaro 2019-02-04 23:29
Tak jak napisałem, to akurat kwestia designu aplikacji. Natomiast Twoje podejście uważam za zasadne (głownie ze względu na jawność i łatwość w czytaniu kodu) i od teraz sam zastosuję je do swoich aplikacji :) - mefsh 2019-02-05 00:33

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0