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

および配列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['本の説明'])
    
これについて:
      str_replace("\n", "\\n", $r['book_description'])
    
そして動作します

私の悪い英語でごめんなさい。

于 2012-11-08T04:25:15.070 に答える