【问题标题】:Autocomplete using php, jquery, mysql [closed]使用 php、jquery、mysql 自动完成 [关闭]
【发布时间】:2012-10-18 05:22:50
【问题描述】:

我在我的项目中使用这个源代码:http://www.htmlblog.us/jquery-autocomplete,但是当我在自动完成文本框中输入时我无法获取结果。

我哪里错了?

我使用下面的代码

Javascript:(我为这个 javascript 使用了一个单独的文件,并检查了这个调用是否使用警报,并且我能够在运行时生成警报消息。)

jQuery(document).ready
 (
    function()
        {
                $('#CourseId').autocomplete( { url:'AutoComplete_Courses.php', minLength:2 } );                
        }
 );

php:

<?php

echo('Your password must be at least 8 characters long');
if ( !isset($_REQUEST['term']) )
    exit;

$dblink = mysql_connect('localhost', 'root', '') or die( mysql_error() );
mysql_select_db('mydatabase');

$rs = mysql_query('select courseid, coursename, creditpoints from coursedetails where coursename like "'. mysql_real_escape_string($_REQUEST['term']) .'%" order by coursename asc limit 0,10', $dblink);

$data = array();
if ( $rs && mysql_num_rows($rs) )
{
    while( $row = mysql_fetch_array($rs, MYSQL_ASSOC) )
    {
        $data[] = array(
            'label' => $row['courseid'] .', '. $row['coursename'] .' '. $row['creditpoints'] ,
            'value' => $row['courseid']
        );
    }
}

echo json_encode($data);
flush();

【问题讨论】:

  • 问题是(除了:“出了什么问题”)?
  • 我建议如果您在阅读博文后遇到问题,请与那里的作者讨论。
  • 如果你打开http://domain/AutoComplete_Courses.php?term=test会发生什么?
  • 我没有收到任何错误,但是当我在自动完成文本框中键入前 2 个(因为 minLength:2)字母时,我看到一个光标在旋转,但没有任何反应,它只是继续旋转。跨度>
  • Please, don't use mysql_* functions in new code。它们不再维护,deprecation process 已开始使用。看到red box?改为了解prepared statements,并使用PDOMySQLi - this article 将帮助您决定哪个。如果你选择 PDO,here is a good tutorial.

标签: php javascript jquery ajax autocomplete


【解决方案1】:

如果您通过在无条件的 echo() 输出前加上随机文本前缀来破坏预期的 JSON 结果,这将无法正常工作。

删除:

echo('Your password must be at least 8 characters long');

否则自动完成插件将收到

garbage text here [{"json":"won't be readable"},...]

【讨论】:

  • 我删除了“echo('您的密码必须至少有 8 个字符长');”但它没有获取任何记录。
  • 按照@dfsq 的建议进行一些基本调试
  • 如何检查 $rs 的值是否能够获取记录?
【解决方案2】:

查看自动完成插件的文档。您似乎使用了错误的对象属性。

http://api.jqueryui.com/autocomplete/

如您所见,没有“url”属性,请改用“source”。

改变这一行:

$('#CourseId').autocomplete( { url:'AutoComplete_Courses.php', minLength:2 } );

$('#CourseId').autocomplete( { source:'AutoComplete_Courses.php', minLength:2 } );

此外,每当我在处理来自数据库的数据时遇到问题时,我通常会将变量包装在 PHP 的内置输出函数 var_dump() 中,以查看 PHP 如何格式化数据。

http://us2.php.net/manual/en/function.var-dump.php

【讨论】:

  • 我最初尝试使用源,但由于它不起作用,我尝试使用 url!
  • 为什么要改成 'url?'这不是文档中的属性。至少改回来。
  • 好的,是不是不能在上面的代码中包含一个php文件来进行数据连接。包括'Config.php'; (有 PDO 连接)
  • 好的。而不是 $dblink = mysql_connect('localhost', 'root', '') 或 die( mysql_error() ); mysql_select_db('我的数据库');我把 include 'Config.php'; [内部配置文件:$dblink = new PDO('mysql:host=localhost;dbname=mydatabase;charset=UTF-8', 'root', '');] 但是,$dblink 为空,有没有其他方法还是我做错了什么?
猜你喜欢
  • 1970-01-01
  • 2011-07-15
  • 2012-06-19
  • 2019-03-07
  • 1970-01-01
  • 2012-06-17
  • 2017-11-11
  • 2018-10-19
相关资源
最近更新 更多