我的目标
使用 jQuery UI 自动完成来搜索书籍,当从建议下拉列表中单击书籍时,使用 select
所选书籍的详细信息填充 HTML 表单的其余部分。自动完成功能。
问题
只要返回的数据不包含换行符(我在数据库中有一个名为 description
的表字段,并且它在存储的数据中具有换行符),自动完成功能就像一个魅力。但如果我包括 description
将字段数据放入返回的数组中,建议下拉列表无法显示。然而,当用 Firebug 检查时,数据正在返回;只是没有出现
代码
// STORING INFORMATION FROM THE DATABASE
$items[$r['book_id']] = array('name'=>$r['book_name'],
'category'=>$r['c_id'],
'author'=>$r['book_author'],
'vendor'=>$r['book_publisher'],
'edition'=>$r['book_edition'],
Culprit here --> 'description'=>$r['book_description'],
'price'=>$r['book_price'],
'date'=>$r['date']);
// DATA FOR POPULATING THE HTML FORM (USING ui.item.<index name>)
$result = array();
foreach ($items as $key=>$value)
{
array_push($result, array("id"=>$key,
"label"=>$key."-".$value['name'],
"value" => strip_tags($value['name']),
"name" => $value['name'],
"cat" => $value['category'],
"author" => $value['author'],
"vendor" => $value['vendor'],
"edition" => $value['edition'],
"description" => $value['description'],
"price" => $value['price'],
"date" => $value['date']));
}
// $result is then supplied to a function which converts the data to json
如果我删除 description
条目来自$items
和$result
数组,一切都按预期进行。在经历了这里的SO线程之后,我尝试了一些事情:
我尝试了什么
尝试过str_replace('\n', '\\n', $r['book_description'])
尝试过str_replace('<br />', '\\n', $r['book_description'])
出于沮丧甚至尝试了urlencode($r['book_description'])
但它们似乎都不起作用。这个问题有解决办法吗?
提前致谢。
<小时/>更新
使用json_encode
返回的集合上的结果是:
最佳答案
您正在使用 json_encode() ? ..它应该为你逃避一切。您也可以尝试类似的方法
$newDesc = str_replace(PHP_EOL, "", $r['book_description']);
或
$newDesc = str_replace(chr(10), "", $r['book_description']);
$newDesc = str_replace(chr(13), "", $newDesc);
关于php - 当返回的 JSON 数据中有换行符时,jQuery UI 自动完成功能不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12016126/