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

Ajax/JS odwołanie do rezultatu

Object Storage Arubacloud
0 głosów
253 wizyt
pytanie zadane 29 lipca 2018 w JavaScript przez khunum Nowicjusz (190 p.)

Witam, napisałem kod w ajaxie który pobiera dane z bazy danych, następnie te dane potraktowane są json.parse i wyświetlane na stronie i w tym miejscu mam problem, ponieważ dalej chciałbym odwoływać się do rezultatu zapytania ajax poza zapytaniem ajaxowym np. w ramach innej funkcji jsowej, czy istnieje taka możliwość bez pobierania z kodu html przy użyciu np. getelementbyid();  bezpośrednio odwołując się do rezultatu ajaxa? Wszelkie  moje dotychczasowe próby zakończyły się błędami typu not defined. 

1 odpowiedź

+1 głos
odpowiedź 29 lipca 2018 przez pablop76 VIP (123,180 p.)
wybrane 1 sierpnia 2018 przez khunum
 
Najlepsza

Nie możesz odwołać się do danych, które są w trakcie pobierania. Ajax to asynchroniczny js, czyli dane pobierane są w tle. Gdy Ty próbujesz je wykorzystać poza zapytaniem ajax to one mogą jeszcze nie istnieć.

Swoją funkcję odpal w zapytaniu, po sprawdzeniu ,czy dane zostały pobrane.

xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
            myFunction(this);
        }
    };

 

komentarz 29 lipca 2018 przez khunum Nowicjusz (190 p.)
edycja 29 lipca 2018 przez khunum

Dzięki za rzeczową odpowiedź. Po umieszczeniu funkcji tak jak piszesz po sprawdzeniu czy dane zostały pobrane z ajaxa funkcja staje się not defined. Jak sobie z taką sytuacją poradzić? Umieszczam kod. 

<html>

    <form id='formularz' action="./test.php" method="post">
        <input type="text" id='dane' name="wejscie" />
        <button onclick="pobierz()">Sprawdz!!!</button>
    </form>
    
</html
<script>
xhttp.onreadystatechange = function() 
    {
        if (this.readyState == 4 && this.status == 200) 
        {
            function pobierz()
            {
                var x = document.getElementById("dane").value;
                alert(x);
            }
        }
    };
</script>
  

 

komentarz 30 lipca 2018 przez pablop76 VIP (123,180 p.)

No tak, ale to nie jest przecierz cały ajax.

Gdzie stworzenie obiektu i połaczenie?

ajax

komentarz 30 lipca 2018 przez khunum Nowicjusz (190 p.)
edycja 30 lipca 2018 przez khunum

<html>
 
    <form id='formularz' action="./test.php" method="post">
        <input type="text" id='dane' name="wejscie" />
        <button onclick="pobierz()">Sprawdz!!!</button>
    </form>
     
</html>
var ajax= new XMLHttpRequest();
	var method="GET";
	var url="data.php";
	var asynchronous = true;
    
	
	ajax.open(method, url, asynchronous);
	
	ajax.send();
	
	ajax.onreadystatechange = function()
	{
		if (this.readyState == 4 & this.status== 200){
		var data = JSON.parse(this.responseText);}
		else {};
        console.log(data[1].gracz);
   
function pobierz()
            {
                var x = document.getElementById("dane").value;
                alert(x);
            }
        }

data.php

<?php
$conn = mysqli_connect("localhost","root", "","projekt");

$result = mysqli_query($conn, "SELECT * from gra");

$data = array();
while($row = mysqli_fetch_assoc($result))
{
$data[]= $row;
}
echo json_encode($data);



?>

chodzi o to, że zawartość pola input pobraną z formularza chciałbym porównać z rezultatem ajaxa i sypie mi błędami jak wciągnę funkcję pobierającą z formularza do ajaxa.

komentarz 30 lipca 2018 przez pablop76 VIP (123,180 p.)
Znowu prubujesz dostać się do danych poza ajaxem :)

Podobne pytania

0 głosów
1 odpowiedź 151 wizyt
0 głosów
2 odpowiedzi 271 wizyt
pytanie zadane 1 maja 2019 w JavaScript przez Alex5 Początkujący (420 p.)
0 głosów
2 odpowiedzi 797 wizyt

92,632 zapytań

141,500 odpowiedzi

319,879 komentarzy

62,012 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.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...