Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript][AJAX][PHP]Przesłanie array przez ajax
Forum PHP.pl > Forum > Przedszkole
xSebaPL
Witam wszystkich, otóż mam problem ze skryptem na przesłanie tablicy. Otóż nie chce działać

Tak wygląda javascript
  1. $("#test").text("Fuck yeah!");
  2. $("#wyszukiwanaFraza").autocomplete({
  3. source: function(request, response) {
  4. $.ajax({
  5. method: "post",
  6. url: "functions/getMovieList.php",
  7. dataType: "json",
  8. success: function(data) {
  9. response(data);
  10. $("#test").text(data);
  11. },
  12. error: function(obj,text,error) {
  13. $("#test").text(text + ": " + error);
  14. }
  15. });
  16. },
  17. change: function(event, data) {
  18. $("#test").text(data);
  19. }
  20. });


a tak wygląda php:
  1. <head><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script></head>
  2. <?
  3. include("../config.php");
  4. db_connect();
  5. $movies = mysql_query("SELECT NAME, ID FROM movies");
  6. $moviesList = mysql_fetch_assoc($movies)
  7. header('Content-Type: application/json');
  8. echo json_encode($moviesList);
  9. db_close();
  10. ?>


Okej teraz chciałbym wytłumaczyć jak skrypt się zachowuję. Otóż gdy wczytuję całą stronę z linka, i wpisuję coś w wyszukiwarkę, to nic się nie dzieje. Dopiero gdy odświeżę stronę za pomocą odnośnika na stronie(że przejścia na stronę główną) to wtedy po wpisaniu coś w wyszukiwarkę wyświetli się taki błąd:
Kod
parsererror: SyntaxError: Unexpected token <

Natomiast wtedy jako odpowiedź wyszukania zwraca:
Kod
[object Object]


Jak nie możecie zrozumieć co próbuje wytłumaczyć że się dzieje, to mogę dać linka do strony na której to wszystko testuję, ale proszę pomóżcie bo męczę się z tym już jakieś kilka dni sad.gif
LowiczakPL
w pliku PHP masz kod HTML a przecież plik PHP ma zwracać czystego JSONA do strony

nagłowki ustawiasz kodem header('Content-Type: application/json');

więc ten JQYERY psuje <head><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script></head>
xSebaPL
Czy jest czy go nie ma wyskakuje ten sam błąd
nospor
Zobacz co ci zwraca twoj ajax dokladnie, np. uzywajac Firebug w Firefox

ps: $moviesList = mysql_fetch_assoc($movies) - brakuje srednika na koncu
ps2: $moviesList = mysql_fetch_assoc($movies) - zdajesz sobie sprawe, ze to zwraca tylko pierwszy film a nie cala liste?
xSebaPL
  1. while ($moviesList = mysql_fetch_assoc($movies)) {
  2. $moviesList2[] = $moviesList;
  3. }
  4. echo json_encode($moviesList);


Czy tak zwróci całą tablice?


A co do tego co ajax zwraca to chodzi ci o to?
nospor
znajdz 10 roznic
$moviesList2
$moviesList

Co do obrazka, to tak, o tym wlasnie mowilem
xSebaPL
Kurde nie jestem aż tak spostrzegawczy, potrafię wypatrzeć tylko jedną różnicę. Dobra mam, w jsonie nie zamieniłem tego. A tak ogólnie to ajax już zwraca tablicę ale dalej wyświetla błąd sad.gif
nospor
10 roznic to tylko nazwa takiej zabawy... tak, tutaj miales znalezc tylko jedna....

zapisujesz filmy do $moviesList2 a wyswietlasz $moviesList...

Pokaz dokladnie kod jaki masz, oraz pokaz dokladnie co ci zwraca ajax w przegladarce, oraz jaki jest teraz blad
xSebaPL
Sory, zedytowałem post. Zamieniłem to i zwraca funkcja już normalnie tablice. Ale błąd pozostał. Wydaje mi się że on ma jakiś związek z tym że wyszukiwarka nic nie wyświetla zanim się strony nie odświeży z odnośnika na stronę główną
nospor
Pokaz dokladnie kod jaki masz, oraz pokaz dokladnie co ci zwraca ajax w przegladarce, oraz jaki jest teraz blad
xSebaPL
Heh, a więc tak:
searchOptions.php
  1. <head><script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
  2. <script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script></head>
  3. Wyszukaj:<br>
  4. <input id="wyszukiwanaFraza" type="text" value="">
  5. <div id="test"></div>
  6. <div id="test2"></div>
  7.  
  8. <script>
  9. $("#wyszukiwanaFraza").autocomplete({
  10. source: function(request, response) {
  11. $.ajax({
  12. method: "post",
  13. url: "functions/getMovieList.php",
  14. dataType: "json",
  15. success: function(data) {
  16. response(data);
  17. $("#test").text(data);
  18. },
  19. error: function(obj,text,error) {
  20. $("#test").text(text + ": " + error);
  21. }
  22. });
  23. },
  24. change: function(event, data) {
  25. $("#test2").text(data);
  26. }
  27. });
  28. </script>


getMovieList.php
  1. <?
  2. header('Content-Type: application/json');
  3. include("../config.php");
  4. db_connect();
  5. $movies = mysql_query("SELECT NAME, ID FROM movies");
  6. while ($moviesList = mysql_fetch_assoc($movies)) {
  7. $moviesList2[] = $moviesList;
  8. }
  9. echo json_encode($moviesList2);
  10. db_close();
  11. ?>


To zwraca ajax w network:


a tak wygląda aktualnie błąd w przeglądalce:
nospor
A co robi ta funkcja response(data); ?

A, niewazme, kod i tak wchodzi tutaj
$("#test").text(text + ": " + error);
czyli do error...

A nie ma tam zadnych bialych znakow w response?
No i co z tym kodowanie masz nie tak bo zamiast polskich liter widze '?'
xSebaPL
Co do response
http://api.jqueryui.com/autocomplete/#option-source
A response callback, which expects a single argument: the data to suggest to the user.
Odpowiedź która oczekuje pojedyńczego argumentu: dane do zaoferowania użytkownikowi. - że funkcja zwrotna z tymi wynikami z bazy danych

Cytat
No i co z tym kodowanie masz nie tak bo zamiast polskich liter widze '?'


Nie wiem, jak pierwszy post dodałem do bazy danych to zamieniło polskie znaki na ?. Potem pisałem bez nich.


Mogę jeszcze pokazać baner z index bo jak wspominałem skrypt nie działa po normalnym załadowaniu strony, dopiero po wczytaniu za pomocą baneru...
nospor
Wywal te schrzanione rekordy. Jesli nadal nie bedzie dzialac to poraz kolejny pytam sie o biale znaki w response.
xSebaPL
Mówiąc rekordy masz na myśli to co dodałem do bazy danych? A to przypadkiem nie spowoduje że wyszukiwarka nie będzie miała z czego wyszukiwać?


A co do białych znaków w response to przecież do response przypisuję tą tabelke z bazy danych która zawiera spacje w nazwach filmów.
nospor
Mowilem o schrzanionych rekordach a nie o wszystkich
Mowiac biale znaki mam na mysli biale znaki przed JSON a nie w srodku JSON.

A wracajac do response...
Cytat
Co do response
http://api.jqueryui.com/autocomplete/#option-source
A response callback, which expects a single argument: the data to suggest to the user.
Odpowiedź która oczekuje pojedyńczego argumentu: dane do zaoferowania użytkownikowi. - że funkcja zwrotna z tymi wynikami z bazy danych
Wywal prosze z kodu to response() i przeczytaj jeszcze raz uwaznie linka co mi podeslales. Nie mam sily dzis juz tego tobie tlumaczyc
xSebaPL
Raczej nie widzę tam żadnych białych znaków, jedyne to właśnie w środku jsona o którym wspominałem wczesniej
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.