Javascript 为什么这张表格赢了';你不调用JS函数吗?(尝试使用PHP脚本和AJAX获取调用MySQL数据库的自动完成表单字段)

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({

我试图使用从MySQL数据库中获取的用户名列表(使用PHP脚本),但由于某些原因,它不起作用。控制台不会显示任何错误

表单中有多个项,并且工作正常(表单位于
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'
     });
});