我正在開發一個允許用戶邀請其他用戶的項目。當用戶收到邀請時,彈出窗口應該彈出...請求他們接受或拒絕。爲此,我使用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請求沒有被創建/被破壞/未定義。
任何幫助表示讚賞!
$ _SESSION [「goodUser」]將值傳遞給隱藏並在javascript中使用隱藏值。 – codelover
什麼是未定義的?你能調試並告訴我們你錯過了什麼價值嗎?您可以在網絡選項卡中看到是否向文件發出了XML請求,如果您在網絡中有XML請求,這意味着ajax正在運行。 –
添加錯誤:在成功之後查看是否已完成調用。此外,您可能需要將數據作爲數據:JSON.stringify({invitedPlayer:invitedPlayer}), – Bindrid