Domanda Passa la variabile Javascript in PHP tramite ajax


Sto cercando di passare una variabile dal mio codice javascript al codice PHP lato server. So che questo deve essere fatto tramite una chiamata ajax che credo di aver fatto correttamente, tuttavia l'accesso alla variabile passata dalla mia ajax al mio php è quando mi imbatto in guai come sono nuovo a php. Ecco il mio codice che ho finora:

$(document).ready(function() {

            $(".clickable").click(function() {
                var userID = $(this).attr('id');
                //alert($(this).attr('id'));
                $.ajax({
                    type: "POST",
                    url: 'logtime.php',
                    data: "userID=" + userID,
                    success: function(data)
                    {
                        alert("success!");
                    }
                });
            });
        });

<?php //logtime.php
$uid = isset($_POST['userID']);
//rest of code that uses $uid
?>

Sto cercando di passare la mia variabile javascript "userID" a php ($ userID), tuttavia ho sbagliato da qualche parte lungo la strada. Grazie per l'aiuto!


12
2018-03-17 14:20


origine


risposte:


Passa i dati come questo alla chiamata ajax (http://api.jquery.com/jQuery.ajax/):

data: { userID : userID }

E nel tuo PHP fai questo:

if(isset($_POST['userID']))
{
    $uid = $_POST['userID'];

    // Do whatever you want with the $uid
}

isset() Lo scopo della funzione è quello di verificare se la variabile data esiste, non di ottenere il suo valore.


33
2018-03-17 14:24



Dal momento che non stai usando JSON come tipo di dati senza la tua chiamata AJAX, suppongo che tu non possa accedere al valore perché il PHP che hai dato sarà sempre vero o falso. isset è una funzione per verificare se qualcosa esiste e ha un valore, non per ottenere l'accesso al valore.

Cambia il tuo PHP in modo che sia:

$uid = (isset($_POST['userID'])) ? $_POST['userID'] : 0;

La riga precedente controllerà se esiste la variabile post. Se esiste, verrà impostato $uid per uguagliare il valore pubblicato. Se non esiste, verrà impostato $uid uguale a 0.

Più tardi nel tuo codice puoi controllare il valore di $uid e reagire di conseguenza

if($uid==0) {
    echo 'User ID not found';
}

Ciò renderà il tuo codice più leggibile e seguirà anche quelle che considero le migliori pratiche per la gestione dei dati in PHP.


3
2018-03-17 14:29



Per verificare se la variabile POST ha un elemento chiamato 'userID', sarebbe meglio usare array_key_exists .. che in realtà verifica l'esistenza della chiave dell'array non se il suo valore sia stato impostato .. una differenza sottile e probabilmente solo semantica, ma migliora la leggibilità.

e ora il tuo $ uid è impostato su un valore booleano a seconda che $ __ POST ['userID'] sia impostato o meno ... Se ricordo dalla memoria potresti provare ...

$uid = (array_key_exists('userID', $_POST)?$_POST['userID']:'guest';

Quindi puoi usare un utente 'ospite' identificabile e rendere il tuo codice molto più leggibile :)

Un altro punto re isset () anche se è improbabile che si applichi in questo scenario, vale la pena ricordare se non si vuole essere scoperti più tardi ... un elemento dell'array può essere legittimamente impostato su NULL ... cioè può esistere , ma essere ancora spopolato e questa potrebbe essere una condizione valida, accettabile e verificabile. ma :

a = array('one'=>1, 'two'=>null, 'three'=>3);
isset(a['one']) == true
isset(a['two']) == false

array_key_exists(a['one']) == true
array_key_exists(a['two']) == true

Bw sicuro di sapere quale funzione vuoi usare per quale scopo.


1
2018-03-17 14:26



In alternativa, prova a rimuovere "dati" e a creare l'URL "logtime.php? UserID =" + userId

La risposta di Brian mi piace di più, questa risposta è solo perché stai cercando di utilizzare la sintassi dei parametri URL in "data" e volevo dimostrare dove puoi usare quella sintassi correttamente.


0
2018-03-17 14:23



$(document).ready(function() {
            $(".clickable").click(function() {
                var userID = $(this).attr('id'); // you can add here your personal ID
                //alert($(this).attr('id'));
                $.ajax({
                    type: "POST",
                    url: 'logtime.php',
                    data : {
                        action : 'my_action',
                        userID : userID 
                    },
                    success: function(data)
                    {
                        alert("success!");
                        console.log(data);
                    }
                });
            });
        });


 $uid = (isset($_POST['userID'])) ? $_POST['userID'] : 'ID not found';
 echo $uid;

$ uid aggiungi le tue funzioni

nota: se $ non è supposto di aggiungere jQuery dove $ definito


0
2018-03-20 07:33