AJAX / JQuery函数未定义

时间:2016-12-03 22:15:35

标签: javascript php jquery ajax

我正在开发一个允许用户邀请其他用户的项目。当用户收到邀请时,弹出窗口应该弹出......要求他们接受或拒绝。为此,我使用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请求没有被制作/被破坏/未定义。

感谢任何帮助!

1 个答案:

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