2016-12-03 90 views
0

我正在開發一個允許用戶邀請其他用戶的項目。當用戶收到邀請時,彈出窗口應該彈出...請求他們接受或拒絕。爲此,我使用AJAX調用來檢查他們是否有任何邀請。這最終會成爲一個自動調用的函數,但現在我只是用一個簡單的按鈕和onclick函數來測試它。AJAX/JQuery函數undefined

會發生什麼是,AJAX請求轉到checkInvitations.php,它檢查充滿用戶的數據庫表。用簡單的英語,checkInvitations.php檢查「用戶」AJAX發送的是否有邀請。如果他們這樣做,checkInvitations將信息傳回給AJAX請求(邀請用戶的人的名字)和(確認邀請)。

不管什麼原因,儘管我已經導入了JQuery庫,但我的函數仍然未定義。我不知道爲什麼會這樣。

下面是AJAX請求的功能。

<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 ?"); 

     } 
    } 
    }) 
} 

而且這裏是它的要求來

<?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); 

?> 

PHP頁面請記住,當我使用$ _SESSION [ 「goodUser」]代替$ _ POST [ 「invitedPlayer」]在上面的PHP文件,我得到我正在尋找的確切輸出。我知道這是有效的。顯然,我只是無法讓它與$ _POST一起工作,因爲AJAX請求沒有被創建/被破壞/未定義。

任何幫助表示讚賞!

+0

$ _SESSION [「goodUser」]將值傳遞給隱藏並在javascript中使用隱藏值。 – codelover

+0

什麼是未定義的?你能調試並告訴我們你錯過了什麼價值嗎?您可以在網絡選項卡中看到是否向文件發出了XML請求,如果您在網絡中有XML請求,這意味着ajax正在運行。 –

+0

添加錯誤:在成功之後查看是否已完成調用。此外,您可能需要將數據作爲數據:JSON.stringify({invitedPlayer:invitedPlayer}), – Bindrid

回答

2

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.

因此,您希望單獨將jquery包含到單獨的標記中。

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