Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> AJAX nie wyświetla wyniku od PHP
dawid75291
post 9.04.2014, 16:58:03
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 smile.gif

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"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
redeemer
post 9.04.2014, 17:16:56
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


--------------------
Go to the top of the page
+Quote Post
dawid75291
post 9.04.2014, 18:15:33
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
Go to the top of the page
+Quote Post
nospor
post 9.04.2014, 18:19:25
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

Go to the top of the page
+Quote Post
dawid75291
post 9.04.2014, 18:28:22
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ą ?
Go to the top of the page
+Quote Post
trueblue
post 9.04.2014, 19:23:55
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1827
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


Cytat(dawid75291 @ 9.04.2014, 19:15:33 ) *
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


--------------------
Go to the top of the page
+Quote Post
dawid75291
post 9.04.2014, 19:40:14
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.
Go to the top of the page
+Quote Post
trueblue
post 9.04.2014, 19:42:32
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ć.


--------------------
Go to the top of the page
+Quote Post
dawid75291
post 9.04.2014, 19:54:03
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
Go to the top of the page
+Quote Post
nospor
post 10.04.2014, 07:53:10
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

Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 8.07.2025 - 10:11