作者: admin

  • 解决node_modules\mysql\lib\protocol\Parser.js:78 Rethrow non-MySQL errors错误处理

    node_modules\mysql\lib\protocol\Parser.js:78 throw err; // Rethrow non-MySQL errors

    在使用mysql作为数据库时,语法没写规范就会遇到这种错误,这对于新手来说就不好解决了,其实这也不是什么大问题。

    其实就是我们在做数据的插入时少了个引号,如:

    conn.query('insert into nodejs_user(liuyan_username,liuyan_userpass) values ("'+req.body.name+'","'+req.body.pass+'")');

     

  • buffer编码生成jpg图片

    buffer 转 图片jpg node.js buffer 编码 转化 图片

    var fs=require('fs');
    
    fs.readFile('./1.jpg',function(a,b){
      var img_str=b.toString('base64');
      var decodeImg = new Buffer(img_str, 'base64');
      fs.writeFileSync('./images/2.jpg',b)
    })

     

  • php爬虫采集网站所有资源链接–simple_html_dom.php

    php 采集 jquery

    simple_html_dom.php能像jquery一样获取dom里面的元素属性和内容

    案例:

    <?php
    require dirname(__FILE__).'/simple_html_dom.php';
    $html = file_get_html('http://www.oschina.net/');
    $links = array();
    //核心就下面这一行
    foreach($html->find('a') as $link) $links[] = $link->href;
    print_r($links);

     

    结果:

    输出
     [0] => http://www.oschina.net/
     [1] => http://www.oschina.net/project
     [2] => http://www.oschina.net/project/lang/19/java
     [3] => http://www.oschina.net/project/lang/194/csharp
     [4] => http://www.oschina.net/project/lang/22/php
     [5] => http://www.oschina.net/project/lang/21/c
     [6] => http://www.oschina.net/project/lang/26/ruby
     [7] => http://www.oschina.net/project/lang/25/python
     [8] => http://www.oschina.net/project/lang/358/go
     [9] => http://www.oschina.net/project/lang/28/javascript

     

    simplehtmldom_1_5

    API:https://sdeno.com/wp-content/uploads/2016/07/manual/manual.htm

    类似插件还有phpQuery 参考:https://sdeno.com/?p=3925

  • 将jQuery插件封装成amd模块

    Require.js amd模式

    将插件定义为amd

    在使用Require.js加载js时,如果想直接加载如:

    paths : {
     "jquery" : ["http://xx/jquery/2.0.3/jquery", "js/jquery"], //别名:['先加载1','备用地址1','备用地址2']
     "a" : "js/a" 
    }

    那么js就必须支持amd模式,我们可以这么做:

    ;(function (factory) {
       if (typeof define === 'function' && define.amd) {
           // AMD. Register as an anonymous module.
           define(['jquery'], factory);
       } else if (typeof exports === 'object' && typeof require === 'function') {
           // Browserify
            factory(require('jquery'));
       } else {
           // Browser globals
           factory(jQuery);
       }
    }(function ($) {
         $.fn.jqueryPlugin = function () {
             //插件代码
         };
    }));

     

     

     

     

  • jQuery自动补全插件–jquery.autocomplete.js

    jquery 模糊搜索 自动完成 select2 云联想 js 模糊

    效果如图:
    complete

     

    <style>
     .autocomplete-suggestions { border: 1px solid #999; background: #FFF; overflow: auto; }
     .autocomplete-suggestion { padding: 2px 5px; white-space: nowrap; overflow: hidden; }
     .autocomplete-selected { background: #F0F0F0; }
     .autocomplete-suggestions strong { font-weight: normal; color: #3399FF; }
     .autocomplete-group { padding: 2px 5px; }
     .autocomplete-group strong { display: block; border-bottom: 1px solid #000; }
    </style>
    //数据:
    var countries = [
     { value: 'Andorra', data: 'AD' },
     { value: 'Zimbabwe', data: 'ZZ' }
    ];
    
    
    $('#input').autocomplete({
      lookup: countries, //加载数据
      onSelect: function (suggestion) { //选中后回调
         alert('You selected: ' + suggestion.value + ', ' + suggestion.data);
      }
    });
    
    <input id="input" type="text">

     

    配置项参数说明:

    * minChars (Number)
        在触发autoComplete前用户至少需要输入的字符数.Default: 1,如果设为0,在输入框内双击或者删除输入框内内容时显示列表
    * width (Number)
        指定下拉框的宽度. Default: input元素的宽度
    * max (Number)
        autoComplete下拉显示项目的个数.Default: 10
    * delay (Number)
        击键后激活autoComplete的延迟时间(单位毫秒).Default: 远程为400 本地10
    * autoFill (Boolean)
        要不要在用户选择时自动将用户当前鼠标所在的值填入到input框. Default: false
    * mustMatch (Booolean)
        如果设置为true,autoComplete只会允许匹配的结果出现在输入框,所有当用户输入的是非法字符时将会得不到下拉框.Default: false
    * matchContains (Boolean)
        决定比较时是否要在字符串内部查看匹配,如ba是否与foo bar中的ba匹配.使用缓存时比较重要.不要和autofill混用.Default: false
    * selectFirst (Boolean)
        如果设置成true,在用户键入tab或return键时autoComplete下拉列表的第一个值将被自动选择,尽管它没被手工选中(用键盘或鼠标).当然如果用户选中某个项目,那么就用用户选中的值. Default: true
    * cacheLength (Number)
        缓存的长度.即对从数据库中取到的结果集要缓存多少条记录.设成1为不缓存.Default: 10
    * matchSubset (Boolean)
        autoComplete可不可以使用对服务器查询的缓存,如果缓存对foo的查询结果,那么如果用户输入foo就不需要再进行检索了,直接使用缓存.通常是打开这个选项以减轻服务器的负担以提高性能.只会在缓存长度大于1时有效.Default: true
    * matchCase (Boolean)
        比较是否开启大小写敏感开关.使用缓存时比较重要.如果你理解上一个选项,这个也就不难理解,就好比foot要不要到FOO的缓存中去找.Default: false
    * multiple (Boolean)
        是否允许输入多个值即多次使用autoComplete以输入多个值. Default: false
    * multipleSeparator (String)
        如果是多选时,用来分开各个选择的字符. Default: ","
    * scroll (Boolean)
        当结果集大于默认高度时是否使用卷轴显示 Default: true
    * scrollHeight (Number)
        自动完成提示的卷轴高度用像素大小表示 Default: 180  
    * formatItem (Function)
        为每个要显示的项目使用高级标签.即对结果中的每一行都会调用这个函数,返回值将用LI元素包含显示在下拉列表中. Autocompleter会提供三个参数(row, i, max): 返回的结果数组, 当前处理的行数(即第几个项目,是从1开始的自然数), 当前结果数组元素的个数即项目的个数. Default: none, 表示不指定自定义的处理函数,这样下拉列表中的每一行只包含一个值.
    * formatResult (Function)
        和formatItem类似,但可以将将要输入到input文本框内的值进行格式化.同样有三个参数,和formatItem一样.Default: none,表示要么是只有数据,要么是使用formatItem提供的值.
    * formatMatch (Function)
        对每一行数据使用此函数格式化需要查询的数据格式. 返回值是给内部搜索算法使用的. 参数值row
    * extraParams (Object)
        为后台(一般是服务端的脚本)提供更多的参数.和通常的作法一样是使用一个键值对对象.如果传过去的值是{ bar:4 },将会被autocompleter解析成my_autocomplete_backend.php?q=foo&bar=4 (假设当前用户输入了foo). Default: {}
    * result (handler)
        此事件会在用户选中某一项后触发,参数为:
        event: 事件对象. event.type为result.
        data: 选中的数据行.
        formatted:formatResult函数返回的值
        例如:
        $("#singleBirdRemote").result(function(event, data, formatted) {
            //如选择后给其他控件赋值,触发别的事件等等
        });

    官网:https://www.devbridge.com/sourcery/components/jquery-autocomplete/

     https://github.com/devbridge/jQuery-Autocomplete

    jQuery-Autocomplete-master.rar

    案例:https://sdeno.com/wp-content/uploads/2016/07/autocomplete/1.html