从数据库检索,无需单击使用onfocus的任何按钮


retrive from DB without click any button using onfocus

嗨,我的代码有一些问题!

我有一个文本框,当用户写在这个文本框中,我想从数据库直接检索,而不单击任何按钮。

然后我的一些表单将完成后写入这个文本框。

我的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。从登录,注册,活动监控,更新数据库字段,而不离开页面的一切