Chiamate ajax da js a php per immagini

Guaro99

Nuovo Utente
20
0
Buonasera, mi trovo un po in difficoltà con il php.

vorrei sapere se (e se si come) è possibile inviare una immagine ad un file js che effettua una chiamata asincrona ad un file php.

Mi spiego meglio, vorrei impostare lo sfondi di un sito , ma vorrei che questa immagine di sfondo fosse passata tramite una chiamata ad un file .php .

apro il sito.html --> lo script js con ajax richiama il php --> il php cerca tra i file l'immagine e la invia --> il js la imposta come immagine.

Spero di essere stato chiaro, grazie mille dell'aiuto in anticipo
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Il file PHP richiamato dallo script js trasmetterà il nome dell'immagine e non l: immagine. Poi, con quel nome lo script dovrà lavorare sul DOM per ricaricarla leggendola dal server tramite http

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Guaro99

Nuovo Utente
20
0
Capisco, mi sapresti dire come richiedere al server l'invio di un'immagine?

Perché vorrei caricare l'immagine di sfondo con il js, però vorrei anche che dopo un tot di tempo si ricaricasse in modo da mostrare l'immagine nuova nel caso fosse stata modificata nel server.
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Devi ricaricare la pagina.

Ma cosa vorresti fare di preciso? Forse uno slide show dello sfondo? In tal caso le immagini le devi caricare tutte al caricamento della pagina (dal server tramite http) e visualizzarle ciclicamente con uno script.

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
Senza nemmeno usare jquery, puoi impostare la ripetizione temporizzata di una funzione js che reimposta il background.
E' tuttavia necessario ingannare in qualche modo la cache del browser che non riscaricherà l'immagine se gli passi sempre lo stesso link (fino a quando non fai un refresh dell'intera pagina). Un codice del genere però dovrebbe funzionare:
HTML:
<html>
<head>
<style>
#foodiv{
    margin: 0 auto;
    width:20em;
    height:20em;
    text-align:center;
}
</style>
</head>
<body>
<div id="foodiv">
Ciao Mondo!
</div>
<script>
    var x = 0;
    function setbg(){
        document.getElementById('foodiv').style.background = 'url(https://picsum.photos/200/?random&qualcosa=' + x +')';
        x = x+1;
    };
    setbg();
    setInterval(setbg, 3000);  //ogni 3 secondi
</script>
</body>
</html>
L'accorgimento qui è quello di inserire un valore diverso in coda al link all'immagine (nella query). In questo esempio sto chiamando un sito che genera immagini random ad ogni chiamata, nel tuo caso devi inserire il link alla pagina php che dovrà rispondere con l'immagine da impostare.
Un problema qui è che ogni aggiornamento provoca un download dell'immagine anche se non è cambiata e per un istante vedi il background scomparire.
Dovresti prevedere un meccanismo che ti permetta di evitare chiamate inutili che restituirebbero la stessa immagine, per esempio fornendo un endpoint che ti dice se e quando è stata cambiata l'immagine, o il suo hash. Oppure, potresti usare ajax per scaricare l'immagine e lato client ne controlli l'hash rispetto all'immagine che hai attualmente come background (in questo caso però non ti risparmi il numero di richieste e i dati trasmessi, ma riesci ad evitare il fastidio grafico).
Di soluzioni possibili ce ne sono diverse...
 
  • Mi piace
Reazioni: Guaro99

Guaro99

Nuovo Utente
20
0
Devi ricaricare la pagina.

Ma cosa vorresti fare di preciso? Forse uno slide show dello sfondo? In tal caso le immagini le devi caricare tutte al caricamento della pagina (dal server tramite http) e visualizzarle ciclicamente con uno script.

Inviato dal mio Nexus 5 utilizzando Tapatalk


Vorrei creare una sorta di stream video usando questo metodo di invio delle immagini.
Grazie della risposta
Post unito automaticamente:

Senza nemmeno usare jquery, puoi impostare la ripetizione temporizzata di una funzione js che reimposta il background.
E' tuttavia necessario ingannare in qualche modo la cache del browser che non riscaricherà l'immagine se gli passi sempre lo stesso link (fino a quando non fai un refresh dell'intera pagina). Un codice del genere però dovrebbe funzionare:
HTML:
<html>
<head>
<style>
#foodiv{
    margin: 0 auto;
    width:20em;
    height:20em;
    text-align:center;
}
</style>
</head>
<body>
<div id="foodiv">
Ciao Mondo!
</div>
<script>
    var x = 0;
    function setbg(){
        document.getElementById('foodiv').style.background = 'url(https://picsum.photos/200/?random&qualcosa=' + x +')';
        x = x+1;
    };
    setbg();
    setInterval(setbg, 3000);  //ogni 3 secondi
</script>
</body>
</html>
L'accorgimento qui è quello di inserire un valore diverso in coda al link all'immagine (nella query). In questo esempio sto chiamando un sito che genera immagini random ad ogni chiamata, nel tuo caso devi inserire il link alla pagina php che dovrà rispondere con l'immagine da impostare.
Un problema qui è che ogni aggiornamento provoca un download dell'immagine anche se non è cambiata e per un istante vedi il background scomparire.
Dovresti prevedere un meccanismo che ti permetta di evitare chiamate inutili che restituirebbero la stessa immagine, per esempio fornendo un endpoint che ti dice se e quando è stata cambiata l'immagine, o il suo hash. Oppure, potresti usare ajax per scaricare l'immagine e lato client ne controlli l'hash rispetto all'immagine che hai attualmente come background (in questo caso però non ti risparmi il numero di richieste e i dati trasmessi, ma riesci ad evitare il fastidio grafico).
Di soluzioni possibili ce ne sono diverse...


Grazie mille del codice, appena ho un po di tempo proverò a testarlo e implementarlo.

Grazie molte della risposta
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Vorrei creare una sorta di stream video usando questo metodo di invio delle immagini.
Grazie della risposta
Post unito automaticamente:




Grazie mille del codice, appena ho un po di tempo proverò a testarlo e implementarlo.

Grazie molte della risposta
Non puoi usare Ajax per trasmettere le immagini

Inviato dal mio Nexus 5 utilizzando Tapatalk
 

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3

1nd33d

Utente Attivo
653
279
CPU
Intel i5 3570K @ 4,5Ghz
Dissipatore
Scythe Mugen 2
Scheda Madre
Gigabyte Z77X-UD3H
HDD
Samsung 840 PRO 256GB + Sandisk Ultra 250GB + Sandisk Plus 960GB
RAM
2x8GB Crucial Ballistix Tactical @2000Mhz CL9
GPU
XFX RX480 GTR Black Edition
Audio
Auzentech X-Fi Forte
Monitor
AOC i2369VW
PSU
Seasonic P660
Case
eh?
Periferiche
Razer Naga HEX v2
OS
Windows 10 64bit - Linux Mint 18
Magari leggere tutto il thread!?! Uno slide show manuale è forse uno streaming video??
Io devo ancora capire se l'utente ha chiaro cosa vuole fare... prima vuole caricare immagini, poi ricaricarle ogni tot tempo, poi "una sorta di stream video usando questo metodo di invio delle immagini" (???), poi "una sorta di stream video quali in live"... adesso gli sfondi sono diventati streaming video live.
Comunque... se tu avessi letto il link, avresti notato anche uno slideshow automatico, che di fatto può simulare uno "streaming" di immagini (io mi riferivo a quello).
 
  • Mi piace
Reazioni: rctimelines

Guaro99

Nuovo Utente
20
0
Io devo ancora capire se l'utente ha chiaro cosa vuole fare... prima vuole caricare immagini, poi ricaricarle ogni tot tempo, poi "una sorta di stream video usando questo metodo di invio delle immagini" (???), poi "una sorta di stream video quali in live"... adesso gli sfondi sono diventati streaming video live.
Comunque... se tu avessi letto il link, avresti notato anche uno slideshow automatico, che di fatto può simulare uno "streaming" di immagini (io mi riferivo a quello).

Chiedo scusa, non volevo generare conflitti tra utenti.

Mi spiego meglio perché effettivamente non sono stato in grado di chiarire il mio problema efficacemente.

Ho un programma in c# che in loop effettua degli screenshot in un PC (che in questo caso farebbe da server).
Io avrei voluto che un secondo PC richiedesse in loop le immagini per visualizzarle in una pagina, credevo che questo mi avrebbe permesso di creare un movimento quasi fluido delle immagini.

Considerando che questo modo di procedere è stato escluso nel corso della discussione sapreste consigliarmi un altro procedimento?
 

rctimelines

Utente Èlite
5,144
2,023
CPU
Ryzen 7 2700X | i7-6700k@4.5 | i5-4460... altri
Dissipatore
wraith MAX | Scythe Katana2|Arctic Freezer 11LP
Scheda Madre
Asrock B450 Fatal1ty 4K | Asus Prime Z270P | Acer Veriton
HDD
Samsung 970evo m.2 | vari | Samsung 860 evo
RAM
16GB G.Skill TridentZ 3000 | 16GB CORSAIR 2133 | 8GB DDR3 1600
GPU
RadeonPro WX3100 4G | ZOTAC GTX 1070 8G | Quadro k620 2G
Monitor
DELL 2419P 2K + Benq 17" | LG Ultrawide 27''
Net
fibra 1000
OS
Windows10-pro64/OpenSUSE-QL15.1/Debian 10.3
Ho un programma che in loop effettua degli screenshot in un PC (che in questo caso farebbe da server).
Io avrei voluto che un secondo PC richiedesse in loop le immagini per visualizzarle in una pagina, credevo che questo mi avrebbe permesso di creare un movimento quasi fluido delle immagini.

Nessuna disputa, forse ti manca la terminologia corretta, perché sinceramente, continuo a capire molto poco di quanto sopra!



Inviato dal mio Nexus 5 utilizzando Tapatalk
 

Mursey

Super Moderatore
Staff Forum
Utente Èlite
8,218
5,655
Ma vuoi crearti da solo un sistema di stream video ?
Perchè la strada non è certo lavorare di screenshot ma molto molto più complessa.

Se è uno studio o una soddisfazione personale ne possiamo discutere ma se è una soluzione ad un altro problema allora meglio usare cose già esistenti...
 

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!