Ich arbeite an einem Projekt, mit dem Benutzer andere Benutzer einladen können. Wenn ein Benutzer eine Einladung erhält, sollte ein Pop-up ... nun ... auftauchen und sie auffordern, zu akzeptieren oder abzulehnen. Dafür verwende ich einen AJAX-Anruf, um zu prüfen, ob sie Einladungen haben. Dies wird schließlich eine automatisch aufgerufene Funktion sein, aber im Moment teste ich sie nur mit einer einfachen Taste und Onclick-Funktion.AJAX/JQuery-Funktion undefined
Was passiert ist, die AJAX-Anfrage geht an checkInvitations.php, die eine Datenbank-Tabelle voller Benutzer überprüft. PlainInvitations.php überprüft in Plain English, ob der übermittelte "User" AJAX eine Einladung hat. Wenn dies der Fall ist, gibt checkInvitations Informationen zurück an die AJAX-Anfrage mit (Name der Person, die den Benutzer eingeladen hat) und (Bestätigung einer Einladung).
Aus irgendeinem Grund, meine Funktion weiterhin als undefiniert, obwohl ich die JQuery-Bibliothek importiert haben. Ich habe keine Ahnung, warum das so ist.
Hier ist die Funktion mit der AJAX-Anfrage.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript">
function checkForInvitations()
{
var invitedPlayer = '<?php echo $_SESSION["goodUser"]; ?>' //invitedPlayer = the logged-in user
console.log("invitedPlayer is: "+invitedPlayer); //variable debug check
$.ajax({
type: "post",
url: "checkInvitations.php",
data: {invitedPlayer: invitedPlayer},
success: function(data)
{
// parse json string to javascript object
var invitations = JSON.parse(data);
console.log(invitations); //variable debug check
// check the invitations to/from
var invitingPlayer = invitations.invitationFrom;
var invitationStatus = invitations.invitationStatus;
//if player has received an invite, pop up a screen asking them to confirm/accept the invite
if(invitationStatus != 'false')
{
clearInterval(checkInvitationIntervalId);
confirm_yes = confirm(invitingPlayer+" invited you to a game. Accept ?");
}
}
})
}
Und hier ist die PHP-Seite fordert sie auf
<?php
session_start();
// Create connection
$conn = new mysqli('localhost', 'root', '', 'warzone');
// Check connection
if ($conn->connect_error)
{
die("Connection failed: " . $conn->connect_error);
}
$invitations = array();
//look for rows in database where user=the invited user and the invitestatus has been set to true (after invite was sent)
$request = "SELECT * FROM warzone.logged_in_users WHERE USER='".$_POST["invitedPlayer"]."' AND INVITESTATUS='TRUE'";
$res = $conn->query($request);
if($row = $res->fetch_assoc())
{
$invitations["invitationFrom"]=$row["INVITING_PLAYER"];
$invitations["invitationStatus"]='true';
}
else
{
$invitations["invitationFrom"]='none';
$invitations["invitationStatus"]='false';
}
echo json_encode($invitations);
?>
Denken Sie daran, wenn ich die $ _SESSION verwenden [ "goodUser"] anstelle von $ _POST [ "invitedPlayer"] in der obigen PHP Datei, ich bekomme die genaue Ausgabe, nach der ich suche. Ich weiß, das funktioniert. Ich kann es natürlich nicht mit $ _POST arbeiten lassen, weil die AJAX-Anfrage nicht gemacht wird/ist kaputt/ist undefiniert.
Jede Hilfe ist willkommen!
$ _SESSION ["goodUser"] Wertübertragung zu versteckten und versteckten Wert in Javascript verwenden. – codelover
was genau ist undefiniert? kannst du debuggen und uns genau sagen, welchen wert du verpasst hast? Sie können auf der Registerkarte Netzwerk sehen, wenn Sie eine XML-Anfrage an die Datei, wenn Sie XML-Anfrage im Netzwerk haben, dass der Ajax funktioniert. –
add Fehler: Abschnitt nach dem Erfolg, um zu sehen, ob der Anruf überhaupt erfolgt ist. Möglicherweise müssen Sie Ihre Daten auch als Daten speichern: JSON.stringify ({investedPlayer: ludedPlayer}), – Bindrid