1

这可能是一个愚蠢的问题,因为我刚刚学习 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>';
    }
}
4

2 回答 2

2

欢迎来到网络开发 :)

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

您可以查看http://php.net/manual/en/reserved.variables.post.php了解更多信息

于 2013-09-01T04:41:15.337 回答
1

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

    $return = $result->fetchAll();

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

有点毫无意义,您基本上是在说:如果为真则返回真..如果为假则返回假,您也可以立即返回 $return ,因为它是布尔值 :)

但恐怕这与你的问题无关。

但是,您是否将 javascript 和 php 混合在一起?它出现在您的第一个代码示例中。您还应该利用 .success、.complete、.failure 等来帮助您了解从 ajax 调用获得的响应会发生什么。

于 2013-09-01T15:01:45.360 回答