我的目标
使用jQuery UI自动填充功能搜索图书,当从建议下拉列表中点击图书时,使用自动填充的select
功能填充HTML表单的其余部分,其中包含所选图书的详细信息。 / p>
问题
只要返回的数据不包含换行符(我在数据库中有一个名为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
会导致:
答案 0 :(得分:2)
您使用的是json_encode()吗? ..它应该为你逃避一切。你也可以尝试像
这样的东西$newDesc = str_replace(PHP_EOL, "", $r['book_description']);
或
$newDesc = str_replace(chr(10), "", $r['book_description']);
$newDesc = str_replace(chr(13), "", $newDesc);
答案 1 :(得分:2)
转义序列(\ n \ r \ n等等...)仅适用于双引号
替换:
str_replace('\n', '\\n', $r['book_description'])对于这个:
str_replace("\n", "\\n", $r['book_description'])然后工作
抱歉我的英语不好。