![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 9.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem z AJAX-em, PHP i XMLHttpRequest. Wysyłam pewną wartość poprzez funkcje searchVideo do PHP, który po prostu ma zwrócić to co jemu przekazałem (przykładowo), lecz AJAX nie wzraca nic, zaś funkcja, która wykonuje się po poprawnym wykonaniu zwraca to co chciałem. I nie wiem dlaczego :/ Używam kilka funkcji ajaxowych, które otrzymują coś od plików PHP i problemów nie było. Błędu też nie widzę. Z góry dziekuję za pomoc ![]() AJAX (odebranie od PHP) Kod $.ajax({ url: "php/search.php", success: function(msg){ alert("ajax: " + msg); }, error: function(err) { console.log(err); } }); JS (XMLHttpRequest - wysyłanie do PHP przykładowej wartości) Kod function searchVideo() { var fd = new FormData(); fd.append("title", document.getElementById('searchinput').value); var xhr = new XMLHttpRequest(); xhr.addEventListener("load", searchVideoComplete, false); xhr.open("POST", "php/search.php"); xhr.send(fd); } function searchVideoComplete (evt) { alert(evt.target.responseText); } PHP (ma po prostu zwrócić to co napisałem) Kod <?php require_once('connect.php'); $tytul = $_POST['title']; echo $tytul; ?> Scenariusz działania (dotychczasowego) 1. Wysyłam funkcją searchVideo wartość inputa z HTML powiedzmy niech to będzie np "Film" 2. PHP otrzymuje tą wartość 3. Funkcja searchVideoComplete() wypisuje w alercie "Film" (czyli prawidłowo) 4. AJAX również wywala alert ale w treści jest tylko "ajax:". A powinien wypisywać "ajax:film" |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 915 Pomógł: 210 Dołączył: 8.09.2009 Skąd: Tomaszów Lubelski/Wrocław Ostrzeżenie: (0%) ![]() ![]() |
1) metoda ajax z jquery przesyła dane metodą GET https://api.jquery.com/jQuery.post/
2) nie przesyłasz żadnych parametrów w requeście -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 9.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Używałem również tej funkcji i jest to samo
Kod $.post( "/php/search.php", { title: document.getElementById("searchinput").value }, function(data) { alert(data); } ); Funkcja function(data) przekazuje mi to co chce, lecz ajax nie. Jeśli zaś nadam na sztywno wartość zmiennej w PHP-ie, która ma być wyswietlona przez ajaxa to pokaże mi ją dobrze. np. Kod $tytul = "Film"; echo $film; Jakich parametrów bo nie za bardzo rozumiem. Jest tam podane co i gdzie ma być przekazane, no chyba, że o czymś zapomniałem. Choć wątpie, bo używam podobnych funkcji do wysyłania danych do innych plikow .php i wszystko działa (zapisuje rekordy w bazie, oraz dobrze je wyświetla za pomocą JSON+AJAX), ale zaś w tej funkcji coś się rypie |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Sprawdzales czy o to
document.getElementById("searchinput").value wogole zawiera co ma zawierac? alert(document.getElementById("searchinput").value); -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 9.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Tak sprawdzałem alertem. I wartość się pokazuje poprawnie.
Kod <div id="wyszukiwarka"> <p> Wyszukaj film: </p> <input type="text" placeholder="Wyszukaj film ..." id="searchinput" name="searchinput" onkeyup="searchSuggest();"> <input type="submit" id="submit_wyszukiwarka" value="Szukaj" onclick="searchVideo()"/> <div id="search_suggest"></div> </div> ten searchinput to po prostu pole do wprowadzania tytułu filmu, który ma być wyszukany w bazie. Może znacie inne metody przekazać taką zmienną do PHP-a, a on potem zwraca tablice JSONową ? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Funkcja function(data) przekazuje mi to co chce, lecz ajax nie. Funkcja function(data) w tym miejscu odbiera dane, a nie przekazuje. Co to znaczy, że "ajax nie"? Masz na myśli Twój pierwszy przykład? Bo $.post to również wywołanie ajaxowe. Próbowałeś zmienić parametr 'type' w wywołaniu $.ajax na 'POST'? Domyślnie przesyłanie jest poprzez GET. Ten post edytował trueblue 9.04.2014, 19:26:46 -------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 9.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Tak, rzeczywiście odbiera odbiera. Mój błąd, chodziło mi właśnie o to.
Tak, sprawdzałem również z typem POST i było to samo. Dziwne jest to, że funkcja odbierająca searchVideoComplete zwraca to co chce (też odbiera od PHP odpowiedź, ale poprawną), a AJAX jakby nie widział tej wartości, która zostałą przekazana do PHP. |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 6 806 Pomógł: 1827 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Spróbuj pokazać więcej kodu - umieść w nim potrzebne fragmenty, a resztę wyrzuć.
-------------------- |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 9.04.2014 Ostrzeżenie: (0%) ![]() ![]() |
Prosze. Myśle, że to wystarczy
HTML Kod <div id="wyszukiwarka"> <p> Wyszukaj film: </p> <input type="text" placeholder="Wyszukaj film ..." id="searchinput" name="searchinput" onkeyup="searchSuggest();"> <input type="submit" id="submit_wyszukiwarka" value="Szukaj"/> <div id="search_suggest"></div> </div> JS Kod function searchVideo() { var fd = new FormData(); fd.append("title", document.getElementById('searchinput').value); var xhr = new XMLHttpRequest(); xhr.addEventListener("load", searchVideoComplete, false); xhr.open("POST", "php/search.php"); xhr.send(fd); } function searchVideoComplete (evt) { alert(evt.target.responseText); } $(document).ready(function(){ $.ajax({ url: "php/search.php", success: function(msg){ alert("ajax: " + msg); msg = msg.replace(/}{/g, "},{"); msg = "[" + msg + "]"; var obj = $.parseJSON(msg); var lang = ''; $.each(obj, function() { document.getElementById("uzytkownika").innerHTML += "<li id='li_lista'><div id='film'>" + "<a href='" + this['sciezka'] + "'>" + "<img id='zdjecie' onmouseover='funkcja(this)'" + " onmouseout = funkcja_powrot(this) src='images/60.jpg'></a><p> Tytul: " + this['tytul'] + "</p><p> Opis: " + this['opis'] + "</p><p> Autor: " + this['autor'] + "</p><p> Ocena: " + this['ocena'] + "</p><a href='" + this['sciezka'] + "'>" + this['tytul'] + "</a></br></div></li>"; }); }, error: function(err) { console.log(err); } }); } PHP Kod <?php
require_once('connect.php'); $sql_popularne = "SELECT Id, Tytul, Ocena, Wyswietlenia, Autor, Opis, Sciezka FROM movies WHERE Tytul LIKE '".$_POST['title']."' ORDER BY Wyswietlenia DESC"; $query = mysql_query($sql_popularne); $count = mysql_num_rows($query); if($count > 0){ while($row = mysql_fetch_array($query)) { $wyswietenia = $row["Wyswietlenia"]; $tytul = $row["Tytul"]; $ocena = $row["Ocena"]; $autor = $row["Autor"]; $opis = $row["Opis"]; $sciezka = $row["Sciezka"]; $info_video = array('tytul'=>$tytul, 'opis'=>$opis, 'autor'=>$autor, 'wyswietlenia'=>$wyswietenia, 'ocena'=>$ocena, 'sciezka'=>$sciezka); echo json_encode($info_video); } } else { } ?> Ten post edytował dawid75291 9.04.2014, 19:55:22 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Moze podaj jakis aktualny kod, bo nie dosc ze korzystasz z funkcji searchSuggest() ktorej nigdzie deklaracji nie widac, to kod ajaxowy z JQuery nie jest w ogole uzuwany przy szukaniu i w nim w ogole nie przekazujesz title.... :/
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 8.07.2025 - 10:11 |