Jquery ui – 自动完成 – UTF8字符集

我正在研究这个jquery数据输入表单,我需要一个特定的字段来自动完成来自mysql的数据

我得到了一切工作,自动完成通过PHP匹配从sql检索数据是英语/拉丁字符很棒

问题是,当我输入希腊语时,我只得到案例SENSITIVE匹配,如果我输入正确的情况,我得到我的匹配,一切顺利,但id’喜欢它是不敏感的情况

如你所知,我正在使用它与外部源,所以我猜它必须是比较两个字符串的东西…正确打字的情况下工作正常…

另外,正如你将在我的代码中看到我有一个数组[id,name]和我当前的配置,(甚至区分大小写)我搜索名称,下拉列表出现,当我点击我想要的名字时,单元格被填充ID,当我提交表单时,id会被发布到下一个php页面。

有什么方法可以有完全相同的东西,但不是用id填充字段来填充它的名称? 即:搜索名称,获取名称下拉列表,点击并在字段中获取名称,当我提交我的ID时发布?

任何帮助将不胜感激。 这是代码:

    

等等…

 
  • 这是js:

     $(function() { var cache = {}, lastXhr; $( ".name" ).autocomplete({ minLength: 1, source: function( request, response ) { var term = request.term; if ( term in cache ) { response( cache[ term ] ); return; } lastXhr = $.getJSON( "search.php", request, function( data, status, xhr ) { cache[ term ] = data; if ( xhr === lastXhr ) { response( data ); } }); } }); }); 

    这是源(search.php):

     $key) { if (strpos(strtolower($key),$q ) !== false) { array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($value))); } if (count($result) > 11) break;} echo json_encode($result); ?> 

    你可以看到我已经包含了mysql_set_charset(’utf8’,$ link); mysql_query(“SET NAMES’utf8’”,$ link); 在我的源文件+我的网页中的字符集…甚至尝试在源PHP文件中设置标记,但它搞砸了一切:(

    如你所知,我对所有这些都是新手,所以如果任何1可能需要一些时间并解释我缺少什么,这将是伟大的:)也任何其他建议/改进将是伟大的,因为这是我的第一批代码之一:)

    提前

    我想通了,strtolower()和UTF-8字符集似乎有问题我在search.php中将strtolower($ string)的两次出现切换为:mb_strtolower(($ string),’UTF-8’)它工作;)

    代码现在看起来像这样:

     sleep( 1 ); if (empty($_GET['term'])) exit ; //change in next line: $q = mb_strtolower(($_GET["term"]),'UTF-8'); if (get_magic_quotes_gpc()) $q = stripslashes($q); $result = array(); foreach ($items as $value=>$key) { //change in next line: if (strpos(mb_strtolower(($key),'UTF-8'),$q ) !== false) { array_push($result, array("id"=>$value, "label"=>$key, "value" => strip_tags($value))); } if (count($result) > 11) break;} echo json_encode($result); 

    回复家伙:)我早上心态+咖啡:)让我更清楚:)

    关于这个的任何想法:“也,正如你将在我的代码中看到我有一个数组[id,name]与我当前的配置,(甚至区分大小写)我搜索名称,下拉列表出现,当我点击我想要的名称,单元格中填充了ID,当我提交表单时,id会被发布到下一个PHP页面。

    有没有办法让完全相同的东西,但不是用id填充字段来填充它的名称? 即:搜索名称,获取名称下拉列表,点击并在字段中获取名称,当我提交时,我会发布ID?“

    你需要添加一个标题来开始php页面(索引或任何你从ajax(search.php)调用)

      header("Content-Type:text/html; charset=utf-8"); 

    在autocomplete插件的文档中,有一个名为matchCase的选项。 默认情况下,它设置为false。 将其更改为true,然后匹配不区分大小写。

     http://docs.jquery.com/Plugins/Autocomplete/autocomplete