这可能是一个愚蠢的问题,因为我现在正在学习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>';
}
}
答案 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调用得到的响应会发生什么。