嗨,我的代码有一些问题!
我有一个文本框,当用户写在这个文本框中,我想从数据库直接检索,而不单击任何按钮。
然后我的一些表单将完成后写入这个文本框。
我的JS代码:function centerIDfocus()
{
var id = document.getElementById("centerID").value;
var data = <?php $center_ID = echo mysql_num_rows(mysql_query("SELECT * FROM 'examcenter' WHERE 'id' = '".id."'")); ?> ;
}
window.onload = addEventsToHTML;
in my form:
<input name="centerID" id="centerID" onfocus="centerIDfocus();">
,这是不工作!红脸
你混合了两种语言- javascript在客户端运行,php在服务器端运行。你需要做的是:
var data = function_to_get_data(); // in javascript
该函数中的将ajax请求调用到PHP脚本的地址-并且仅在该PHP脚本中调用数据库以返回所需的数据
你的PHP代码将只运行一次,当页面被加载,之后它不会再运行,因为没有任何事情发生在服务器端。如果你想在每次获得焦点时都运行它,那么你应该使用AJAX。
看看AJAX得到,我很确定这是你想要的:http://api.jquery.com/jQuery.get/
很难知道你打算做什么,但是…
我猜你对事情发生的时间和"onfocus"被触发的时间感到困惑。
PHP在构建页面时在服务器上运行。相比之下,javascript在浏览器中运行,要么在构建的页面到达之后(onload),要么响应用户点击或其他事件(如onfocus)。
因此,javascript(在浏览器中)无法插入PHP(在服务器上)。出于同样的原因(和安全),javascript不可能直接与数据库通信。
你可以采取两种方法来做(我认为)你正在尝试做的事情。
您可以在PHP中创建一个javascript数组,按ID索引,并包含所有可能的ID及其数据。使用PHP读取数据库,然后回显javascript来定义数组。这将成为发送页面的一部分。然后,作为对事件的响应,这意味着您想要填充字段,您从数组中提取数据,并将其放在您想要的位置。这将是缓慢的页面加载,但非常快速的响应点击触发的变化。
另一种选择是使用ajax。最简单的方法是使用jquery向服务器发送GET请求,请求与ID相关的数据。服务器必须通过提取ID、读取数据库并生成应答来响应该URL。我建议使用JSON。然后,当jquery请求返回时,javascript代码可以将数据从JSON移到字段中。这将使初始页面更轻,但对触发单击有一个获取延迟。
然而,我认为你可能对焦点事件也有问题。当用户在输入任何数据之前将光标移动到字段中时,会触发此操作。此时,它将包含在HTML中设置的数据。如果可以在此时设置ID,那么也可以将其设置为数据库中的数据。
我认为您需要两个字段-一个用于ID,另一个用于查找数据。然后在ID字段的onblur事件上运行javascript。
希望有帮助。
使用如下格式:
$('.centerID').keyup(function(){
var val = this.val();
var url = '/do.php'; // url to a php script
var val = 'action=checkValue&value='+val; // send it the value
$.getJSON(url, val, function(data){
// Something to do when you get the data back
});
});
然后创建一个php脚本,检查数据库并返回JSON答案,然后按照您的意愿做。
BTW -我假设你可以使用jQuery。你也可以把它应用到你的JavaScript中。
我使用keyup()作为一个例子,但你可以将其扩展到keydown(), click(), focus(), focusout()等…
我有一个do.php脚本,其中包含一个switch语句,可能的值为action=并返回JSON。从登录,注册,活动监控,更新数据库字段,而不离开页面的一切