Javascript 为什么这张表格赢了';你不调用JS函数吗?(尝试使用PHP脚本和AJAX获取调用MySQL数据库的自动完成表单字段)
我试图使用从MySQL数据库中获取的用户名列表(使用PHP脚本),但由于某些原因,它不起作用。控制台不会显示任何错误 表单中有多个项,并且工作正常(表单位于Javascript 为什么这张表格赢了';你不调用JS函数吗?(尝试使用PHP脚本和AJAX获取调用MySQL数据库的自动完成表单字段),javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我试图使用从MySQL数据库中获取的用户名列表(使用PHP脚本),但由于某些原因,它不起作用。控制台不会显示任何错误 表单中有多个项,并且工作正常(表单位于editarPerfil.php文件中,由guardarconfilperfil.php文件处理) 但是由于某些原因,我没有从JS文件中得到任何信息,当userName字段的内容发生更改时,应该调用JS文件 这是我的HTML表单: 这是我的php文件: 您应该只需要调用一次: $( "#userName" ).autocomplete({
editarPerfil.php
文件中,由guardarconfilperfil.php
文件处理)
但是由于某些原因,我没有从JS文件中得到任何信息,当userName
字段的内容发生更改时,应该调用JS文件
这是我的HTML表单:
这是我的php文件:
您应该只需要调用一次:
$( "#userName" ).autocomplete({
source: '/perfil/autocompletarUsername.php'
});
最有可能在页面加载时,在$(document).ready()中
看起来,当您更改文本框时,自动完成会一次又一次地启动。尝试删除onChange并调用autocomplete,如下所示:
public_html/perfil/autocompletarUsername.php <--- the php script
public_html/perfil/editarPefil.php <--- the form
public_html/js/formularios.js <--- the js file
$(document).ready(function() {
$( "#userName" ).autocomplete({
source: '/perfil/autocompletarUsername.php'
});
});
一次。当然,这是假设您的文件路径是正确的。用$(document).ready()处理程序围绕jQuery。既然已经在使用jQuery,为什么还要使用内联JS命令呢?谢谢!但我只是在尝试,什么也没发生。控制台也是无声的<代码>$(文档).ready(函数autocompletarUserNames(){$(“#userName”).autocomplete({source:'/perfil/autocompletarUsername.php'});})代码>脚本在页脚,用$(document)包装。ready()
不是必需的。我看到了@hungerstar的一些问题,但你是对的。YMMV@Rosamunda您是否验证了正在发出Ajax请求,如果是,响应是否包含您期望的数据?您可以使用内置在浏览器中的开发人员工具(我更喜欢Chrome)来实现这一点,或者您可以将以下内容添加到autocomplete的config对象中,以验证对autocomplete小部件的响应:{source:'…',response:function(event,data){console.log('autocomplete data',data);}
。您的查询失败了吗?看起来您是在使用文本框的内容进行查询。您不需要这样做。只需删除查询中的where子句。实际上,您可能会遇到问题,因为PHP是服务器端的,JS是客户端的。您需要执行Ajax请求来获取数据。下面是一个很好的示例:@MarkBowman i这是一个执行AJAX的jQuery UI小部件。@hungerstar你说得对。我不知道autocomplete执行了AJAX。谢谢。我只在客户端使用过autocomplete。
<?php
session_start();
include $_SERVER['DOCUMENT_ROOT'].'/private/conectar.php';
$conectar = new PDO('mysql:host='.HOST.'; dbname='.DATABASE.'; charset=utf8', USER, PASS);
//get search term
$user = $_GET['userName'];
$buscarUsuario = $conectar->prepare("
SELECT userName
FROM usuarios
WHERE userName
LIKE '%?%'
ORDER BY userName ASC
");
$buscarUsuario->bindParam(1, $user);
$buscarUsuario->execute();
$row = $buscarUsuario->fetchAll(PDO::FETCH_ASSOC);
foreach ($row as $key => $value) {
$data[] = $value['userName'];
}
//return json data
echo json_encode($data);
?>
public_html/perfil/autocompletarUsername.php <--- the php script
public_html/perfil/editarPefil.php <--- the form
public_html/js/formularios.js <--- the js file
$( "#userName" ).autocomplete({
source: '/perfil/autocompletarUsername.php'
});
$(document).ready(function() {
$( "#userName" ).autocomplete({
source: '/perfil/autocompletarUsername.php'
});
});