未定义的索引PHP Ajax jquery帖子

时间:2013-09-01 04:29:38

标签: php javascript jquery ajax

这可能是一个愚蠢的问题,因为我现在正在学习PHP,jquery / ajax甚至是javascript。我无法将变量传递给PHP来查询MYSQL服务器。我将变量传递给newCharacter.php中的以下HTML中的javascript函数:

    Choose your name:<input type='text' id='name' 
            onchange="verifyName(this.value)">

然后我尝试通过以下代码将其发送到PHP页面。

function verifyName(name) {
    $.ajax({
        url: "Classes/pc.php",
        type: "POST",
        data: {
            'name': name
        }
    });

    <? php
    echo pc::nameTaken($_SESSION['name']).';'; ?>

}

但是我在页面源中出现以下错误:

var result = 0;
             <br />
<b>Notice</b>:  Undefined index: name in
<b>D:\Server\htdocs\dungeonexplorers\newCharacter.php</b> 
on line <b>33</b><br />    ;                

我做错了什么?据我所知,POST会话变量没有正确传递。

编辑:添加Pc类(相关部分)

public static function nameTaken($name)
{
    try{
        $db = DBConnect::connect();
        $result = $db->prepare('SELECT name                
           FROM pc WHERE name=:name LIMIT 1');
        $result->bindParam(':name',$name);
        $result->setFetchMode(PDO::FETCH_ASSOC);
        $result->execute();
        $return = $result->fetchAll();

        if ($return)
        {
            return true;
        }
        else{
            return false;
        }
    }
    catch (PDOException $e)
    {
        Echo 'PDO error: ' . $e->getMessage() . '<br>';
    }
    catch (Exception $e)
    {
        Echo 'General Error retrieving username and password.<br>';
    }
}

2 个答案:

答案 0 :(得分:2)

欢迎使用网站开发:)

POST Body变量包含在$ _POST超全局中。尝试将$ _SESSION切换到$ _POST,看看是否有帮助。

您可以查看http://php.net/manual/en/reserved.variables.post.php了解详情

答案 1 :(得分:1)

不是真的答案,但我只想指出

    $return = $result->fetchAll();

    if ($return)
    {
        return true;
    }
    else{
        return false;
    }

有点毫无意义,你基本上是这样说:如果它是真的则返回true ..如果它是假的,则返回false,你可能只是立即返回$ return,因为它是一个bool:)

但我担心这与你的问题无关。

但是,你在混合javascript和php吗?它出现在你的第一个代码示例中。你还应该利用.success,.complete,.failure等来帮助你看看你从ajax调用得到的响应会发生什么。