我正在开发一个允许用户邀请其他用户的项目。当用户收到邀请时,弹出窗口应该弹出......要求他们接受或拒绝。为此,我使用AJAX调用来检查他们是否有任何邀请。这最终将是一个自动调用的函数,但是现在我只是用一个简单的按钮和onclick函数来测试它。
发生的事情是,AJAX请求转到checkInvitations.php,它检查一个充满用户的数据库表。用简单的英语,checkInvitations.php检查" user"发送的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页面
<?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 [&#34; goodUser&#34;]代替$ _POST [&#34; invitePlayer&#34;]时,请记住,我得到了确切的输出I&# 39;我正在寻找。我知道那很有效。我显然无法使用$ _POST,因为AJAX请求没有被制作/被破坏/未定义。
感谢任何帮助!
答案 0 :(得分:2)
来自Mozzila Developer API on script tags。
如果脚本元素指定了src属性,则应该 没有在其标签中嵌入脚本。
因此,您希望将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>