2016-12-03 6 views
0

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!

+0

$ _SESSION ["goodUser"] Wertübertragung zu versteckten und versteckten Wert in Javascript verwenden. – codelover

+0

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. –

+0

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

Antwort

2

Von der Mozzila Developer API on script tags.

If a script element has a src attribute specified, it should not have a script embedded inside its tags.

Daher möchten Sie Ihre Aufnahme von Jquery in ein separates Tag trennen.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js" type="text/javascript"> 
</script> 
<!-- end script before you start the one with your code in it --> 
<script type="text/javascrpt"> 

    // Your code that involves $ here... 

</script>