这对你们中的一些人来说可能毫无疑问,但我真的在这个问题上摸不着头脑。我开始使用CakePHP并迷上它但它与常规PHP不同(它们使用一些简写进行大量编码)。无论如何,我在按下按钮时尝试更新我的数据库,而无需用户在表单中输入新数据。目前我正在使用AJAX和一个调用javacript函数的按钮标记。这应该就好像你正在注册一个稍后将被添加到“我的课程”的课程(由数据库中的注册[sic]表填充)。这是AJAX代码:
<script>
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("alert").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","/Enrolments/register.php",true);
xmlhttp.send();
}
</script>
事后看来,需要检查IE6及以下版本的if语句似乎很愚蠢,但这只是W3的建议。这就是按钮的内容:
<button onclick="loadXMLDoc()">Register</button>
当然,页面上有一些内容(预览课程的视频)。这就是register.php的样子:
<?php
$user = $this->Session->read('Auth.User');
$id = $user['user_id'];
$this->Status->read(null, $id);
$this->Status->set('course_id', 1);
$this->Status->save();
echo "You are now registered for this course";
?>
我没有添加查找要添加的正确course_id。我只是试图通过为该字段传递“1”来测试它(当前注册[sic]表只有两个列 - user_id和course_id)以查看它是否实际更新数据库。目前,它没有。任何建议都会很棒。
编辑:为了清楚起见,我试图在点击“注册”时使用以下信息更新注册表:user_id =当前user_id,course_id = 1.
答案 0 :(得分:0)
来自@Guillermo comment这似乎不是cakephp的方法,但是当使用post:
xmlhttp.open("POST","/Enrolments/register.php",true);
您需要at least set this header also:
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
但是如果你能接受简单get
的字符限制,那就使用它:
xmlhttp.open("GET","/Enrolments/register.php",true);