1

我的目标

使用 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

如果我从and数组中删除description条目,一切都会按预期工作。在这里通过 SO 线程后,我尝试了几件事:$items$result

我尝试了什么

试过了str_replace('\n', '\\n', $r['book_description'])

试过了str_replace('<br />', '\\n', $r['book_description'])

出于沮丧甚至尝试urlencode($r['book_description'])

但它们似乎都不起作用。这个有解决方法吗?

提前致谢。


更新

在返回的集合上使用json_encode会导致:

在此处输入图像描述

4

2 回答 2

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);
于 2012-08-18T05:51:22.140 回答
2

转义序列(\n \r \t 等...)仅适用于双引号。
代替:

      str_replace('\n', '\\n', $r['book_description'])
    
对于这个:
      str_replace("\n", "\\n", $r['book_description'])
    
然后工作

对不起,我的英语不好。

于 2012-11-08T04:25:15.070 回答