Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP][JavaScript]Wprowadzanie elementów do divów bez podglądu
Forum PHP.pl > Forum > Przedszkole
BienuSS
Witam
Mam coś takiego że schufluje mi tablice przy wczytywaniu strony, tworze hashe dla każdego diva i potrzebuje zrobić tak żeby po kliknieciu dopiero pokazały sie obrazki w danym divie, ale żeby użytkownik wczesniej nie mógł zobaczyć który obrazek jest w którym divie.

Dostałem już kiedys taką odpowiedz od @trueblue
Cytat
Hashe są powiązane z obrazkami, tak?
Jeśli tak, to wyświetlasz tylko hashe (które są w sesji), a kiedy ktoś kliknie na jedną z odpowiedzi, to wysyłasz poprzez Ajax jej hash. Na serwerze sprawdzasz, która odpowiedź miała hash i odsyłasz pary hash+źródło obrazka, a jedną z par oznaczasz jako prawidłową. Kiedy dostaniesz odpowiedź, to przypisujesz hashom na stronie obrazki (dodajesz je) i oznaczasz odpowiedzi jako prawidłowe/nieprawidłowe.


I mam tu pytanie bo daje do div id="hash" i mówisz żeby przypisac hashom obrazki ale musze to zrobic przez

Kod
document.getElementById("").innerHTML=" <img src="<?echo $obrazek1;?>">"


ale wtedy i tak mi widac tresc obrazka
nospor
Nie, powiedziano ci wyraznie, ze obrazek masz pobierac przez AJAX. Gdzie tu masz AJAX?
BienuSS
Kod z ajaxu tutaj nie wrzucałem bo nie do konca to rozumiem, ajax odsyła do kodu php, a ja za pomocą js musze wprowadzić obrazki do diva
trueblue
Do PHP wysyłasz hash/hashe, a odsyłasz źródło obrazka/ów i wstawiasz na stronę.

P.S. Nie łatwiej było kontynuować tamten temat?
BienuSS
1. zrobic to w php za pomocą if czy jak? chodzi mi o to odsyłanie źródła obrazka dla danego hasha?
2. jak mam wstawić pozniej obrazek bez użycia js do diva ?

Tamten temat zszedł już wgl w inną stronę i stwierdziłem że nawet po samym temacie komuś później moze być łatwiej znaleź odpowiedz
trueblue
ad.1 Proponowałem Ci, abyś hashe przechowywał w sesji (to jest właśnie dobry powód na kontynuację tamtego wątku). Wtedy klucz elementu to hash, a wartość elementu to źródło obrazka. Nie musisz wtedy stosować żadnych if.
ad.2 A kto powiedział, że bez JS? Skoro będziesz używał Ajax do zapytania o źródła obrazków, to raczej będziesz odpowiedź umieszczał przy pomocy JS.
BienuSS
Czyli później dane zwracane przez ajax wrzucić do js, i wtedy nie będą widoczne dla użytkownika, tak ?
trueblue
Żądanie Ajax wykonasz w JS, więc nic nie wrzucasz do JS - już będziesz miał te dane.
Raczej powinny być widoczne dla użytkownika, bo przecież po kliknięciu chcesz pokazać obrazki - jaki inny sens miałoby żądanie Ajax?
BienuSS
Nie rozumiemy sie do końca, dane wychodzące z ajaxa bede miał juz w js ok,
chodzi mi o to żeby użytkownik nie widział w kodzie do którego diva idzie który obrazek
bo będę musiał dać document,getelement byid().innerhtml=" i tu źródło obrazka"
trueblue
To jaki cel ma to żądanie Ajax? Pobrać źródła obrazków i nie pokazywać ich?
BienuSS
Bo chodzi o to że obrazki pokazują się po nakliknieciu na któryś div czyli w momencie klikniecia wysyła sie ajax, i żeby wczesniej nie było widać w którym divie jest jaki obrazek - przed kliknieciem
trueblue
Po raz kolejny piszę.
Na kliknięcie wykonujesz żądanie Ajax wysyłając hash lub kilka hashy, w odpowiedzi otrzymujesz źródło/a obrazków. Mając powiązanie hash<->źródło obrazka, wstawiasz je na stronę. Robisz to w JS.
BienuSS
z tymi hashami tak: ?
  1. $_SESSION['hash_obrazka'] = źródło obrazka;


a ajax tak:

  1. $('#pobierz').click(function() {
  2.  
  3. $.ajax({
  4. type:"GET",
  5. url:"pobierz.php",

data i datatype chyba nie musze pisać

i w pobierz.php

  1. wprowadzić własnie te zmienne:
  2. $_SESSION['hash_obrazka'] = źródło obrazka;


Mam jeszcze pytanie , bo elementy do diva są losowanie za pomocą shuffle array, czy ludzie moga wykryć pattern na to ?
trueblue
W pobierz.php:
  1. $zrodlo_obrazka = $_SESSION[$hash_obrazka];


Czy ludzie mogą wykryć jak są przestawiane elementy? A czy ludzie mogą trafić 6-tkę w totka?

BienuSS
A czy w ten sposób
  1. $zrodlo obrazka = $sesion['hash']

nie podpinamy pod zmienna "$zrodloobrazka" danego hasha
nie tak:
  1. $sesion['hash'] = "100.jpg";
trueblue
Tak, w ten sposób podpinamy jakąś wartość pod zmienną $zrodlo obrazka.
BienuSS
Dobra nie ważne ja sie pogubilem juz wszystko ogarniam biggrin.gif

Aktualny kod:

  1. //tworze hashe
  2. $_SESSION[$hash] = $item;


nastepnie JS:
  1. jQuery(function ($)
  2. { // a
  3. $(".area").click(function (event)
  4. {
  5. $.ajax({
  6. type: "GET",
  7. url: "random_case_id.php",
  8. dataType: "json",
  9. success: function(data)
  10. {
  11. case1 =data["case1"];
  12. case2 =data["case2"];
  13. document.getElementById('<?echo $hash;?>').innerHTML = '<img src="'case1'" style="width:80px; height:80px; padding-top:15px;">';
  14. document.getElementById('<?echo $hash2;?>').innerHTML = '<img src="'case2'" style="width:80px; height:80px; padding-top:15px;">';
  15. },
  16. });
  17. });
  18. });
  19.  
  20. </script>


i random_case_id.php
  1. $case1_skin = $_SESSION[$hash];
  2. $case2_skin = $_SESSION[$hash2];
  3.  
  4. $myObj1->case1 = $case1_skin;
  5. $myObj1->case2 = $case2_skin;
  6.  
  7. $myJSON1 = json_encode($myObj1);
  8.  
  9. echo $myJSON1;
  10.  


I problem mam w tym że w pliku random_case_id.php nie widzi mi zmiennych z sesji, próbowałem je już wysyłać w ajaxie:
data: $_SESSION[$hash] = $item, ale to nic mi nie dało

Kombinowałem też z serializacją danych, żeby wrzucić te wszystkie zmienne do tablicy, dać serialize i wrzucić do data, ale tez nie pyklo
trueblue
Cytat(BienuSS @ 6.04.2018, 22:59:28 ) *
I problem mam w tym że w pliku random_case_id.php nie widzi mi zmiennych z sesji, próbowałem je już wysyłać w ajaxie:

A startujesz sesję w tym pliku?

Cytat(BienuSS @ 6.04.2018, 22:59:28 ) *
<img src="'case2'" ...

A tu co robisz?

BienuSS
AD1 tak dałem session_start(); ale czy wtedy nie startuje nowa sesja i zmienne znikają ?

AD2 To wprodadza obrazki do diva żeby sie pokazały, całą animacje bede robił później

UP
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.