PDA

View Full Version : Utilizzo del metodo GET


Andrea_CT
13-01-2018, 19:24
Salve a tutti, sono nuovo su questo forum e, come da titolo, ho un problema sull'utilizzo del metodo GET. Sicuramente è un problema di facile risoluzione ma non sono riuscito a venirne a capo.

Ho una pagina HTML all'interno della quale c'è un bottone che mi rimanda al seguente div e quindi all'apertura della pagina "prova.php".

<div id="dialog-form" title="Rispondi">

<object type="text/html" data="prova.php" width="420px", height="420px"></object>

</div>

Il mio obiettivo è passare una variabile nella pagina php e per farlo utilizzo il metodo GET.
Per questo motivo modifico
data="prova.php" in data="prova.php?CODICE="+id dove ovviamente id è la variabile della pagina html che voglio passare.

Nella pagina php richiamo la variabile con $_GET['CODICE'] che tuttavia mi ritorna 0, probabilmente perchè non legge la variabile id.


Ho provato a semplificare nel seguente modo (per fare una prova) data="prova.php?CODICE=5" e così mi viene tornato correttamente 5 come valore.

Grazie in anticipo...

Pbdz
14-01-2018, 09:54
Ciao, il problema è che tenti di passare un parametro tramite la variabile id inserita direttamente nell'html.
Questo non potrà mai funzionare, in quanto non è possibile usare variabili javascript nell'html (a meno che tu non stia usando framework come angular, react e così via).

Per far funzionare il tutto dovrai cambiare l'attributo "data" del tag object dinamicamente attraverso javascript.
In pratica alla pressione del tasto che visualizza il tuo div andremo a chiamare una funzione che modifica il tag object.

Ad esempio:

HTML
<button onclick="visualizzaPagina(4)">Visualizza</button>
<div id="dialog-form" title="Rispondi">

<object type="text/html" id="contenitore" data="prova.php" width="420px", height="420px"></object>

</div>

JAVASCRIPT
function visualizzaPagina(id){
document.getElementById('contenitore').data = 'prova.php?CODICE='+id;
}

Andrea_CT
14-01-2018, 11:13
Ciao, il problema è che tenti di passare un parametro tramite la variabile id inserita direttamente nell'html.
Questo non potrà mai funzionare, in quanto non è possibile usare variabili javascript nell'html (a meno che tu non stia usando framework come angular, react e così via).

Per far funzionare il tutto dovrai cambiare l'attributo "data" del tag object dinamicamente attraverso javascript.
In pratica alla pressione del tasto che visualizza il tuo div andremo a chiamare una funzione che modifica il tag object.

Ad esempio:

HTML
<button onclick="visualizzaPagina(4)">Visualizza</button>
<div id="dialog-form" title="Rispondi">

<object type="text/html" id="contenitore" data="prova.php" width="420px", height="420px"></object>

</div>

JAVASCRIPT
function visualizzaPagina(id){
document.getElementById('contenitore').data = 'prova.php?CODICE='+id;
}


Grazie mille, così funziona perfettamente :)

Andrea_CT
14-01-2018, 13:36
Altro problema: questa è la pagina in cui ricevo la variabile, e la leggo correttamente. Adesso devo passarla a "upload.php" ma anche in questo caso non va, come mai?



<html>

<?php

$cod = $_GET["CODICE"];
echo "$cod";

?>

<script type="text/javascript" src="https://code.jquery.com/jquery-1.10.2.js"></script>

<head>
<style>
#writingArea {border: solid black 2px; touch-action:none; -ms-touch-action:none;}
</style>
<script src="hand-1.0.11.js"></script>


<script>


function pulisci() {
context.clearRect(0, 0, writingArea.width, writingArea.height);
}

var writingArea;
var context;
var pointerDown = [];
var lastPositions = [];

var onPointerMove = function(evt) {
if (pointerDown[evt.pointerId]) {
context.strokeStyle = "rgb(255, 0, 0)";

context.beginPath();
context.lineWidth = 3;
context.moveTo(lastPositions[evt.pointerId].x, lastPositions[evt.pointerId].y);
context.lineTo(evt.clientX, evt.clientY);
context.closePath();
context.stroke();

lastPositions[evt.pointerId] = { x: evt.clientX, y: evt.clientY };

}
};

var onPointerOut = function (evt) {
pointerDown[evt.pointerId] = false;
};

var onPointerUp = function (evt) {
pointerDown[evt.pointerId] = false;
};

var onPointerDown = function (evt) {
pointerDown[evt.pointerId] = true;

lastPositions[evt.pointerId] = { x: evt.clientX, y: evt.clientY };
};

window.onload = function() {

writingArea = document.getElementById("writingArea");

writingArea.width = writingArea.clientWidth;
writingArea.height = writingArea.clientHeight;

context = writingArea.getContext("2d");

writingArea.addEventListener("pointerdown", onPointerDown, false);
writingArea.addEventListener("pointermove", onPointerMove, false);
writingArea.addEventListener("pointerup", onPointerUp, false);
writingArea.addEventListener("pointerout", onPointerUp, false);

}



$(document).ready(function() {


$("#bt_upload").click(function() {
var writingArea = document.getElementById('writingArea');
var dataURL = writingArea.toDataURL();
$.ajax({
type: "GET",
url: "upload.php?prova=$cod",
data: { img: dataURL }

}).done(function(msg){
alert(msg);
});
});


});


</script>
</head>
<body>
<canvas width="350px" height="300px" id="writingArea"></canvas>
<p>

<button onclick="pulisci()">Pulisci</button>
<button id="bt_upload">Upload</button>

</p>
</div>
</body>
</html>

Pbdz
14-01-2018, 13:42
non funziona perchè non puoi stampare una variabile php senza usare i tag <?php ?>.

Devi cambiare la riga
url: "upload.php?prova=$cod",

in
url: "upload.php?prova=<?=$cod ?>",


Nota: la sintassi <?=$cod ?> è la versione abbreviata di <?php echo $cod; ?>

:)

Andrea_CT
14-01-2018, 13:56
chiarissimo grazie