搜索栏类型错误

Search Bar TypeError

大家晚安!

TypeError Argument 2 passed to CodeIgniter\Database\BaseBuilder::like() must be of the type string, null given, called in D:\xampp\htdocs\lordeCI\app\Controllers\AutocompleteSearch.php on line 31

Codeigniter 为下面的代码块抛出此错误,“titulo”和“post_id”是列table 的名字叫做 'posts':

public function ajaxSearch()
    {
        helper(['form', 'url']);

        $data = [];

        $db      = \Config\Database::connect();
        $builder = $db->table('posts');   

        $query = $builder->like('titulo', $this->request->getVar('q')) //this is line 31
                    ->select('post_id, titulo as text')
                    ->limit(10)->get();
        $data = $query->getResult();
        
        echo json_encode($data);
    }

此外,有些图片加载不正确,浏览器给出状态代码:200 虽然内容类型是“text/html”,我检查了图片路径,它是正确的。然而,下面的消息出现在开发工具的网络选项卡中。

"DevTools failed to load SourceMap: Could not load content for chrome-extension://pmncamalnkoafdfdmojmhanhngjaakcb/browser-polyfill.js.map: HTTP error: status code 404, net::ERR_UNKNOWN_URL_SCHEME"

例外情况

你得到:你正在将空值传递给 q 参数,发生异常是因为它就像调用:$query = $builder->like('titulo', null),这不可能发生,只接受字符串作为第二个参数对于 like 方法。

要解决此问题,请在使用前验证您的参数:

$titulo = '';
if ( ! empty( $titulo ) ) {
    $titulo = $this->request->getVar('q');
}
$query = $builder->like('titulo', $titulo);

更好的方法是通过 Form Validation

图片问题

您必须检查如何 return 将图像发送给客户。如果您 return 直接来自 echo 的图像,您将遇到这种错误。

最好的方法是在您的应用服务器级别解决这个问题。

SourceMap 错误

问题不大,不会影响你的申请。看看this Whosebug's question.