使用php,jquery,mysql自动完成

时间:2012-10-28 19:55:28

标签: php javascript jquery ajax autocomplete

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

我哪里错了?

我使用以下代码

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

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();

2 个答案:

答案 0 :(得分:1)

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

删除:

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

否则自动完成插件将会收到

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

答案 1 :(得分:0)

查看AutoComplete插件的文档。看起来你使用了错误的对象属性。

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

如您所见,没有“网址”属性,请改用“来源”。

更改此行:

$('#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