嗨我的代码有问题!
当用户在此文本框中写入时,我有一个文本框我想直接从DB中检索而不点击任何按钮。
然后我的一些表格将在写入此文本框后完成。
我的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;
以我的形式:
<input name="centerID" id="centerID" onfocus="centerIDfocus();">
这不起作用! 任何想法红脸
答案 0 :(得分:0)
你混合了两种语言 - 在客户端运行javascript,在服务器端运行php。 你需要做的是:
var data = function_to_get_data(); // in javascript
在该函数中调用ajax请求到你的php脚本的地址 - 并且只在那个php脚本中调用你的数据库来返回所需的数据
答案 1 :(得分:0)
你的PHP代码只会运行一次,当页面被加载后,它将不再运行,因为服务器端没有任何事情发生。如果你想在每次获得焦点时运行它,那么你应该使用AJAX。
看看AJAX获取,我很确定这就是你想要的: http://api.jquery.com/jQuery.get/
答案 2 :(得分:0)
很难知道你打算做什么,但是......
我的猜测是,当事情发生时和“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。
希望有所帮助。
答案 3 :(得分:0)
使用类似的东西:
$('.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
});
});
然后只需创建一个检查数据库并返回JSON答案的php脚本,然后随意使用它。
BTW - 我假设你可以使用jQuery。您也可以将此应用于JavaScript。
我使用keyup()作为一个例子,但你可以将它应用于keydown(),click(),focus(),focusout()等......
我有一个do.php脚本,其中包含一个switch语句,其可能值为action =并返回JSON。从登录,注册,活动监控到更新数据库字段而不离开页面的所有内容。