it-swarm.com.de

Übergeben Sie die JavaScript-Variable an PHP über Ajax

Ich versuche, eine Variable aus meinem Javascript-Code an den serverseitigen PHP -Code zu übergeben. Ich weiß, dass dies über einen Ajax-Aufruf erfolgen muss, von dem ich glaube, dass ich ihn richtig gemacht habe. Wenn ich jedoch auf die Variable zugreife, die ich von meinem Ajax in meinen PHP-Code übertrage, dann ist dies der Fall, wenn ich in Schwierigkeiten gerate, da ich neu in PHP bin. Hier ist mein Code, den ich bis jetzt habe:

$(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
?>

Ich versuche, meine Javascript-Variable "userID" an php ($ userID) zu übergeben, jedoch bin ich irgendwo auf der Straße schiefgegangen. Danke für die Hilfe!

13
Staleyr

Übergeben Sie die Daten wie folgt an den Ajax-Aufruf ( http://api.jquery.com/jQuery.ajax/ ):

data: { userID : userID }

Und in Ihrem PHP machen Sie folgendes:

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

    // Do whatever you want with the $uid
}

Die Funktion isset() besteht darin, zu prüfen, ob die angegebene Variable existiert, und nicht, um ihren Wert zu ermitteln.

34
mirrormx

Da Sie nicht JSON als Datentyp no Ihres AJAX - Aufrufs verwenden, würde ich davon ausgehen, dass Sie nicht auf den Wert zugreifen können, da das von Ihnen angegebene PHP immer nur wahr oder falsch ist. isset ist eine Funktion, um zu prüfen, ob etwas existiert und einen Wert hat, um nicht auf den Wert zuzugreifen. 

Ändern Sie Ihre PHP wie folgt:

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

Die obige Zeile prüft, ob die Beitragsvariable existiert. Wenn es existiert, wird $uid dem gebuchten Wert gleichgesetzt. Wenn es nicht existiert, wird $uid gleich 0 gesetzt. 

Später in Ihrem Code können Sie den Wert von $uid überprüfen und entsprechend reagieren

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

Dadurch wird Ihr Code lesbarer und folgt den von mir empfohlenen Methoden für den Umgang mit Daten in PHP.

3
Liam

Um zu testen, ob die Variable POST ein Element mit dem Namen "userID" enthält, ist es besser, array_key_exists .. zu verwenden. Diese prüft, ob der Array-Schlüssel vorhanden ist, und nicht, ob der Wert festgelegt wurde semantischer Unterschied, verbessert jedoch die Lesbarkeit.

und jetzt wird Ihre $ uid auf einen booleschen Wert gesetzt, abhängig davon, ob $ __ POST ['userID'] gesetzt ist oder nicht ... Wenn ich mich aus dem Speicher rufe, sollten Sie es versuchen ...

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

Dann können Sie einen identifizierbaren Gastbenutzer verwenden und Ihren Code so lesbarer machen. :)

Ein weiterer Punkt ist re isset (), auch wenn es unwahrscheinlich ist, dass es in diesem Szenario angewendet wird. Es ist jedoch zu beachten, wenn Sie später nicht erwischt werden möchten ... Ein Array-Element kann legitim auf NULL gesetzt werden, dh es kann existieren , aber noch nicht besiedelt sein, und dies könnte eine gültige, akzeptable und überprüfbare Bedingung sein. aber :

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

Sie wissen sicher, welche Funktion Sie für welchen Zweck verwenden möchten.

1
Radiotrib
$(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 füge deine Funktionen hinzu

hinweis: Wenn $ nicht unterstützt wird, fügen Sie jQuery hinzu, wobei $ definiert ist

0
Pankaj Kanani

Versuchen Sie alternativ, "data" zu entfernen und die URL "logtime.php? UserID =" + userId festzulegen

Ich mag Brian's Antwort besser, diese Antwort ist nur, weil Sie versuchen, die URL-Parametersyntax in "data" zu verwenden, und ich wollte demonstrieren, wo Sie diese Syntax richtig verwenden können.

0
AmericanUmlaut