当前位置:首页>>问题

常用的php、js、mysql等功能代码集中贴,实时更新中。。。

1、页面加载后 通过id 添加点击事件,点击后进行页面跳转window.onload=function(){varelement=document.getElementById('tzqyweixin');if(element){ele

admin

46、Vue中的watch和mounted的区别

功能不同:watch是用来监听数据的变化,当数据变化时执行异步操作或开销较大的操作;

而mounted是在Vue实例被挂载到DOM后执行的函数,主要用于初始化数据和操作DOM。

执行时间不同:watch是当数据变化时执行,而mounted是在组件被挂载到页面上后执行。

总的来说,watch更适合用来监听数据的变化并执行异步操作,而mounted更适合用来在组件被挂载后进行初始化操作。


45、百度地图根据地址获取地址的经纬度

    //获取用户地址的经纬度
    public function getAddressLngLat() {
        
        $user = auth_user();
        $user_address = Db::name('shopro_user_address')->where('user_id',$user->id)->find();
        if($user_address['jd']){
            $this->success('获取成功', $user_address);
            die;
        }else{
            
            $address = $user_address['province_name'].$user_address['city_name'].$user_address['district_name'].$user_address['address'];
            $result = [];
            $url = "https://api.map.baidu.com/geocoding/v3/?address=" . urlencode($address) . "&output=xml&ak=你的百度地图的ak";
            $xml = file_get_contents($url);
    		//file_put_contents('baidu.txt',$xml);
    
            if ($xml === FALSE) {
                echo "HTTP请求失败
";
                return null;
            }
            try {
                $doc = new DOMDocument();
                @$doc->loadXML($xml); // 使用@抑制解析XML时可能产生的警告
                $xpath = new DOMXPath($doc);
                $lngList = $xpath->query("//location/lng");
                $latList = $xpath->query("//location/lat");
    
                if ($lngList->length > 0 && $latList->length > 0) {
                    $lng = $lngList->item(0)->nodeValue;
                    $lat = $latList->item(0)->nodeValue;
                    $result['jd'] = $lng;
                    $result['wd'] = $lat;
                    Db::name('shopro_user_address')->where('user_id',$user->id)->update($result);
                } else {
                    echo "无法从XML中提取经纬度信息
";
                    return null;
                }
            } catch (Exception $e) {
                echo "解析XML异常: " . $e->getMessage() . "
";
                return null;
            }
            $this->success('获取成功', $result);
        }
    }


44、高德地图根据地址获取地址的经纬度

// 地址转坐标示例(使用高德API)
function addressToCoordinates($address) {
    $apiKey = "your_api_key";
    $url = "https://restapi.amap.com/v3/geocode/geo?key=$apiKey&address=" . urlencode($address);
    $response = json_decode(file_get_contents($url), true);
    
    if ($response['status'] == '1' && !empty($response['geocodes'])) {
        list($lon, $lat) = explode(',', $response['geocodes'][0]['location']);
        return [(float)$lon, (float)$lat];
    }
    throw new Exception("地址解析失败:{$response['info']}");
}


43、Trying to access array offset on value of type null

答:出现这个问题的原因是:php版本7.4以后PHP解析器会对null类型的下标访问直接报错

解决办法:在方法里面添加 error_reporting (E_ERROR);

image.png


42、uniapp如何监听页面返回的操作?

onBackPress() {
    // 你的逻辑代码,例如显示确认对话框,或者阻止默认行为等
    console.log('返回键被按下');
    uni.setStorageSync("refresh",2);
    //return true; // 如果返回true,则执行默认的后退操作;如果返回false,则不执行默认的后退操作。
},


41、order_sn字段是索引字段,之前全部是数字,后面我需要在数字前面加上字母,使用save()插入记录的时候报错:

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'wx202511525490012829008000' in 'field list'

怎么改都是报这个错误,后面发现order_sn的值必须全部一致,但是我不可能把之前的订单号全部改了,那数据不就错乱了。

所以放弃在order_sn前面加字母的想法,改成新增一个字段来保存字母把


40、fastadmin后台老是登录后很快就自动退出,解决办法:

找到php.ini配置文件,找到文件里面的session.gc_maxlifetime = 1440,这句表示session值24分钟后过期,所以登录后很快就会

退出,设置成session.gc_maxlifetime = 144000就行了,session有效期40个小时

image.png

上面设置后如果不管用的话,找到config.php文件或者session.php文件,添加'expire' => '86400';(过期时间为24小时)


39、fastadmin,后台列表页,第一项隐藏掉删除按钮的代码:

{field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate,
    formatter:function (value, row, index) {
        var that = $.extend({}, this);
        //console.log(index);
        if(index == 0 || index == 1){
            $(table).data("operate-del", null); // 列表页面隐藏 .编辑operate-edit  - 删除按钮operate-del
        }
        that.table = table;
        return Table.api.formatter.operate.call(that, value, row, index);
    }
    
}

找到列表页对应的js文件,加上上面的代码即可



38,fastadmin的e-input如何设置默认值

首先找到e-input绑定的变量,假设是v-model="form.model.title",在这个模版文件对应的js文件里面下面的位置加上title,然后设置默认值即可

image.png

image.png

image.png


37、由于目标计算机积极拒绝,无法连接。

网站搭建好后,打开页面报这个错误,是因为redis没有开启,打开redis即可

image.png


36、shopro商城分享二维码注册后无法绑定上下级?

首先系统功能是正常的,没有问题,出现无法绑定上下级的原因是后台分享url设置不对,正确分享url是:https://xxx.com/#/

微信截图_20241227164528.jpg


35、 hinkQueue::push,队列不执行是什么原因?

原因就是需要在宝塔安装supervisor,也就是进程守护管理器

image.png

安装完之后,再添加好进程,让进程跑起来,队列就能顺利的执行了。


34、js公历农历转换

            //e:0(公历),1(农历);t:年;a:月;r:日
            
            function d2(e, t, a, r) {
                var n = t,
                i = a,
                s = r,
                d = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365, 396, 0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366, 397];
                if (0 == e) {
                    var o = parseInt(n),
                    c = parseInt(i),
                    m = parseInt(s),
                    v = c - 1,
                    u = l(o),
                    _ = o - 1940,
                    y = d[14 * u + v] + m,
                    g = y + b[_].BaseKanChih,
                    p = g % 60;
                    if (p = p < 22 ? 22 - p: 82 - p, p += 3, p < 10 && (p += 60), y <= b[_].BaseDays) {
                        _--;
                        var f = o - 1;
                        u = l(f),
                        v += 12,
                        y = d[14 * u + v] + m
                    } else var f = o;
                    var h = b[_].BaseDays;
                    for (L = 0; L < 13; L++) {
                        var w = h + b[_].MonthDays[L] + 29;
                        if (y <= w) break;
                        h = w
                    }
                    var D = L + 1,
                    A = y - h,
                    M = b[_].Intercalation;
                    return 0 != M && D > M && --D == M && (D = -M),
                    D > 12 && (D -= 12),
                    {
                        yy: f,
                        mm: D,
                        dd: A
                    }
                }
                var f = parseInt(n),
                D = parseInt(i),
                A = parseInt(s),
                _ = f - 1940,
                M = b[_].Intercalation,
                S = D;
                0 != M && (S > M ? S++:S == -M && (S = M + 1)),
                S--;
                for (var y = 0,
                L = 0; L < S; L++) y += b[_].MonthDays[L] + 29;
                y += b[_].BaseDays + A;
                for (var u = l(f), L = 13; L >= 0 && !(y > d[14 * u + L]); L--);
                var m = y - d[14 * u + L];
                if (L <= 11) var o = f,
                c = L + 1;
                else var o = f + 1,
                c = L - 11;
                return {
                    yy: o,
                    mm: c,
                    dd: m
                }
            }



33、微信原生小程序,调用汽车品牌列表,提示:setData数据传输长度2077kb,存在有性能问题

答:通过仔细排查,发现后端调用汽车品牌数据时,代码存在逻辑问题,导致大量数据重复,修复后,再去前端修改展示代码即可

image.png

      public  function getBrandList()
        {
            
            
            $BrandModel = new BrandModel();
            
            $brandlist = $BrandModel->getBrandlistgroup(array('enabled'=>1));
            
            //print_r($brandlist);die;
            
            if (!$brandlist ) {
                throw new MissException([
                    'msg' => '请求不存在',
                    'errorCode' => 40000
                ]);
            }
            
            $i = 0 ;
/*
            foreach ($brandlist as $k=>$v)
            {

                $list = $BrandModel->getListByWhere(array('enabled'=>1,'firstname'=>$v['firstname']),'sort desc');
                
                $brandlist[$i]['firstname'] = $v['firstname'];
                $brandlist[$i]['brandlist'] = $list;
                
                unset($list);
                
                $i++;
                
            }
*/
            return json_encode($brandlist);
        }
	<view class="cities" wx:for="{{brandlist}}" wx:for-index="i" data-name="{{item.name}}" data-id="{{item.id}}" bindtap='selectbrand2'  data-target="DrawerModalR">
	
		<view wx:if="{{brandlist[i].firstname!=brandlist[i-1].firstname}}" class="current" id="{{item.firstname}}">{{item.firstname}}</view>
		
		<view class="city_type">
		
			<!--<view class="brandlist_new" wx:for="{{item.brandlist}}" wx:for-item="itemName" data-name="{{itemName.name}}" data-id="{{itemName.id}}" bindtap='selectbrand2'  data-target="DrawerModalR">-->
			
			<view class="brandlist_new">
			
				 <view class="img">
					<image src="{{item.thumb}}"></image>
				 </view>
				<view class="brandname">{{item.name}}</view>

			</view>
			
		</view>
		
	</view>


32、多个相同的uniapp的支付宝小程序,有一个编译时总是报错,其他的编译正常

答:编译时报错的,文件夹名称包含中文和空格,把中文改成英文,去掉空格再次编译,恢复正常


31、点击导航栏,页面滑动到对应的位置

<script>

    $('.ivu-tabs-tab').on('click',function(){    //点击导航栏class=ivu-tabs-tab的多个栏目中的一个
        
        $('.ivu-tabs-tab').removeClass('ivu-tabs-tab-active ivu-tabs-tab-focused');
        $(this).addClass('ivu-tabs-tab-active ivu-tabs-tab-focused');    //切换到当前栏目

        var index = $(this).index()-1;
        console.log(index);
        if(index == 1){
            $('.ivu-tabs-ink-bar').css('transform','translate3d(112px, 0px, 0px)');
        }else if(index == 2){
            $('.ivu-tabs-ink-bar').css('transform','translate3d(224px, 0px, 0px)');
        }else if(index == 3){
            $('.ivu-tabs-ink-bar').css('transform','translate3d(336px, 0px, 0px)');
        }else if(index == 4){
            $('.ivu-tabs-ink-bar').css('transform','translate3d(448px, 0px, 0px)');
        }else if(index == 0){
            $('.ivu-tabs-ink-bar').css('transform','translate3d(0, 0px, 0px)');
        }
        
        $('html, body').animate({    //页面滑动到栏目对应的内容
          scrollTop: $('.ivu-tabs-tabpane:eq('+index+')').offset().top
        }, 500); // 1000是动画持续时间,单位为毫秒
        
    });
    
 //页面滑动到指定位置后,固定导航栏到屏幕上   
  window.addEventListener('scroll', function() {
  
        var halfway = window.innerHeight / 2; // 获取视口高度的一半
        var element = document.getElementById('ivu-tabs-sticky'); // 获取目标元素
        var distanceFromTop = element.getBoundingClientRect().top + 290; // 获取元素距离顶部的距离
     
        if (distanceFromTop <= halfway) {
            // 如果元素距离顶部的距离小于或等于视口高度的一半,则改变CSS
            //element.style.backgroundColor = 'blue';
            $('#ivu-tabs-sticky').addClass('ivu-affix');
            $('.ivu-tabs-nav').css('width','938px')
        } else {
            element.style.backgroundColor = 'white'; // 默认或其他背景色
            $('#ivu-tabs-sticky').removeClass('ivu-affix');
        }
    });


</script>

image.png

image.png

image.png


30、shopxo的支付宝小程序配置授权登录的流程:

1)下载秘钥工具:https://opendocs.alipay.com/common/02kipk?pathHash=0d20b438

2)安装后打开秘钥工具,生成应用公钥和应用私钥

image.png

3)进入支付宝小程序的开发者后台,在开发设置-接口加签方式里面,输入生成的应用公钥,然后会自动生成支付宝公钥

image.png

4)把应用公钥、应用私钥、支付宝公钥填入到shopxo的后台支付宝小程序里面,就可以了!

5)参考页面:https://blog.csdn.net/qq363685855/article/details/142797733


29、微信jssdk将网页分享给好友,图标不显示,是因为公众号没认证,缺少权限,还有一个就是使用新接口wx.updateAppMessageShareData,不使用老接口wx.onMenuShareAppMessage

image.png

参考页面:https://blog.csdn.net/weixin_54000091/article/details/125068766

https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html

https://blog.csdn.net/a466783352/article/details/102410217


28、算命网站测算结果页,微信内打开自动跳转到微信登录页,如何取消?

/control/ctl_ffsm_h5_index.php,第26行:$this->wxlogin($return_url);//微信自动登陆,注释掉即可


27、php的curl方法访问网址时,直接返回0的状态码,是什么原因?

答:


26、No input file specified.

将伪静态规则,index.php后面加上一个问号(?)保存就可

<IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>


25、uniapp的h5和小程序调试报错:TypeError: (void 0) is not a function,import.meta.globEager

产生这个报错,导致h5端和微信小程序端跑不起来,原因如下:

import.meta.globEager已经被废弃,所以找到对应文件,

将 const files = import.meta.globEager('./*.js'); 改成 const files = import.meta.glob('./*.js', { eager: true }) 即可


24、layer.open弹出的窗口不居中,甚至看不到的解决方法就是加上offset,手动定义距离顶部的距离

layer.open({
  type: 2,
  area: ['413px', '410px'],
  title:false,
  shadeClose: true,
  offset: '1113', // 弹窗居中
  content:[document.getElementById("webhttp").innerHTML+'/tem/tclogin.php', 'no']
});

23、thinkphp,apache下的伪静态规则:

 <IfModule mod_rewrite.c>
  Options +FollowSymlinks -Multiviews
  RewriteEngine On

  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^(.*)$ index.php?/$1 [QSA,PT,L]
</IfModule>

22、PHP中有一个strip_tags()函数,可以去除HTML标签,得到纯文本格式的字符串

21、uniapp(vue3)+ php 三级会员分组筛选,效果图如下:

image.png

看完效果图,直接上代码,前端:

第一部分:
	  <uni-forms-item name="group_id" label="会员分组"> <!-- 多列 -->
	  		  
	    <picker mode="multiSelector" @columnchange="bindMultiPickerColumnChange" :value="multiIndex" :range="multiArray">
	    	<view style="padding-top: 6px;">{{multiArray[0][multiIndex[0]]}},{{multiArray[1][multiIndex[1]]}},{{multiArray[2][multiIndex[2]]}}</view>
	    </picker>
	  		
	  </uni-forms-item>
第二部分:
  import { onLoad, onPageScroll, onPullDownRefresh } from '@dcloudio/uni-app';
  const multiArray = ref([[],[],[]]);	//存放多列
  const grouplist3 = ref([[],[],[]]);	//存放多列会员分组所有数据到一个数组里面
  const multiIndex = ref([0, 0, 0]);	//存放多列
  
    onLoad((options) => {
		//获取会员分组-多列
		uni.request({ 
		    url: 'https://xxxx.top/addons/shopro/user.user/getUserGroup2',
		    data: {
		        text: 'uni.request'
		    },
		    success: (res) => { 
				for(var i = 0;i<res.data.data.length;i++){
					if(res.data.data[i].pid == 0){
						multiArray.value[0].push(res.data.data[i].name)
						grouplist3.value[0].push(res.data.data[i])
					}			
				}
				console.log('grouplist3',grouplist3.value)
				console.log('multiArray',multiArray.value) 
				for(var i2 = 0;i2<res.data.data[0].xiaji.length;i2++){
					multiArray.value[1].push(res.data.data[0].xiaji[i2].name)	
				}
				for(var i3 = 0;i3<res.data.data[0].xiaji[0].xiaji.length;i3++){
					multiArray.value[2].push(res.data.data[0].xiaji[0].xiaji[i3].name)
				}
		    }
		});
  });
  
  	function bindMultiPickerColumnChange(e) {	//会员分组-多列
		
		multiIndex.value[e.detail.column] = e.detail.value
		switch (e.detail.column) {
			
			case 0: //拖动第一列
				
				multiIndex.value[1] = 0	//拖动第一列,第二列回到1
				multiIndex.value[2] = 0	//拖动第一列,第三列回到1
				for(var i3=0;i3<grouplist3.value[0].length;i3++){	//遍历第一列
					if(i3 == e.detail.value){	//匹配到选中的第一列的行数
						uni.request({
							url: 'https://xxxxxxxx.top/addons/shopro/user.user/getUserGroup2',
							data: {
								id: grouplist3.value[0][i3].id
							},
							success: (res) => {
								multiArray.value[1] = []
								for(var i = 0;i<res.data.data.length;i++){
									multiArray.value[1].push(res.data.data[i].name)
								}
								multiArray.value[2] = []
								for(var i2 = 0;i2<res.data.data[0].xiaji.length;i2++){
									multiArray.value[2].push(res.data.data[0].xiaji[i2].name)		
								}
							}
						});							
					}
				}
				console.log('选择的会员分组id',grouplist3.value[0][multiIndex.value[0]].xiaji[multiIndex.value[1]].xiaji[multiIndex.value[2]].id)
				
				state.model.group_id = grouplist3.value[0][multiIndex.value[0]].xiaji[multiIndex.value[1]].xiaji[multiIndex.value[2]].id
				//multiIndex.value.splice(1, 1, 0)
				//multiIndex.value.splice(2, 1, 0)
				//multiIndex.value.splice(3, 1, 0)
				break
				
			case 1: //拖动第2列
			
				multiIndex.value[2] = 0	//拖动第二列,第三列回到1
				for(var i3=0;i3<grouplist3.value[0][multiIndex.value[0]].xiaji.length;i3++){//遍历第2列	
					if(i3 == e.detail.value){	//匹配到选中的第二列的行数
						uni.request({
							url: 'https://xxxxxxxx.top/addons/shopro/user.user/getUserGroup2',
							data: {
								id: grouplist3.value[0][multiIndex.value[0]].xiaji[i3].id
							},
							success: (res) => {
								multiArray.value[2] = []
								for(var i2 = 0;i2<res.data.data.length;i2++){
									multiArray.value[2].push(res.data.data[i2].name)		
								}
							}
						});							
					}
				}
				
				console.log('选择的会员分组id',grouplist3.value[0][multiIndex.value[0]].xiaji[multiIndex.value[1]].xiaji[multiIndex.value[2]].id)
				
				state.model.group_id = grouplist3.value[0][multiIndex.value[0]].xiaji[multiIndex.value[1]].xiaji[multiIndex.value[2]].id
				//multiIndex.value.splice(2, 1, 0)
				break
			case 2: //拖动第3列

				console.log('选择的会员分组id',grouplist3.value[0][multiIndex.value[0]].xiaji[multiIndex.value[1]].xiaji[multiIndex.value[2]].id)
				state.model.group_id = grouplist3.value[0][multiIndex.value[0]].xiaji[multiIndex.value[1]].xiaji[multiIndex.value[2]].id
				/*说明:
				1、grouplist3.value[0]=获取的所有的会员分组信息
				2、multiIndex.value[0]=获取选择第一列的第几行
				3、multiIndex.value[1]=获取选择第二列的第几行
				4、multiIndex.value[2]=获取选择第三列的第几行
				*/
				break
		}
		//this.$forceUpdate()
	}

后端部分:

    //获取会员分组
    public function getUserGroup2(){
        
        $params = $this->request->only(['id']);
        if(empty($params)){
           
                $a1 = Db::query("select id,pid,name from fa_user_group where pid = 0");
                foreach ($a1 as $k1 => $v1){
                    $a2 = Db::query("select id,pid,name from fa_user_group where pid = ".$v1["id"]);
                    $a1[$k1]['xiaji'] = $a2;
                    foreach ($a2 as $k2 => $v2){
                        $a3 = Db::query("select id,pid,name from fa_user_group where pid = ".$v2["id"]);
                        $a1[$k1]['xiaji'][$k2]['xiaji'] = $a3;
                    }
                }
            
        }else{
            
                $a1 = Db::query("select id,pid,name from fa_user_group where pid = ".$params['id']);
                foreach ($a1 as $k1 => $v1){
                    $a2 = Db::query("select id,pid,name from fa_user_group where pid = ".$v1["id"]);
                    $a1[$k1]['xiaji'] = $a2;
                    /*foreach ($a2 as $k2 => $v2){
                        $a3 = Db::query("select id,pid,name from fa_user_group where pid = ".$v2["id"]);
                        $a1[$k1]['xiaji'][$k2]['xiaji'] = $a3;
                    }*/
                }
            
        }
        

        //print_r($a1);
        
        $this->success('获取会员分组成功!', $a1);
    }


20、人物肖像的AI效果生成空白图像,是因为精易浏览器组件导致的,删除精易浏览器后,恢复正常

19、mysql语句中,获取当前时间戳方法:UNIX_TIMESTAMP(),now()是获取当前的日期时间

18、tp框架基本sql语句查询与链式查询

包含文件  use thinkDb; public function index3()
    {
        $result=Db::execute('insert into ceshi (name,paw)VALUE ("李四","234")');//添加数据
        print_r($result);
        $result=Db::execute('update ceshi set name="王五" where id=3');//修改数据
        print_r($result);
        $result=Db::query('delete from ceshi where id=3');//删除数据
        $result=Db::query('select * from ceshi ');//查询数据
        print_r($result);
        $result=Db::query('show tables from tptest');//显示数据库列表
        print_r($result);
        $result=Db::query('truncate table ceshi');//清空表数据
        print_r($result);
        $result=Db::connect('db1')->query('select * from ceshi');//查询两个数据库数据需要配置
        $result=Db::connect('db2')->query('select * from ceshi');//查询两个数据库数据需要配置
        Db::table('ceshi')
            ->insert(['id'=>1,'name'=>'张三','paw'=>'123']);
        Db::table('ceshi')
            ->where('id',1)
            ->update(['name'=>'李四']);
       print_r( Db::table('ceshi')
           ->where('id',1)
            ->select());
        Db::table('ceshi')
           ->where('id',1)
           ->delete();
    }

17、在线播放m3u8视频: https://m3u8play.com/http://tool.liumingye.cn/m3u8/(第一个播放速度比较快)

用来测试的m3u8视频地址:https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8

1、页面加载后 通过id 添加点击事件,点击后进行页面跳转

window.onload = function() {
    var element = document.getElementById('tzqyweixin');
    if (element) {
        element.addEventListener('click', function() {
            window.location.href="https://work.weixin.qq.com/ca/cawcde996650db8f07?customer_channel=<?php echo $oid?>";
        });
    }

2、php代码内,函数外的变量在函数内使用,只需要在变量使用前加上一句:global $con;

3、error_reporting=E_ALL & ~E_NOTICE//开启报错,error_reporting(0)//禁止报错

4、mysqli_connect连接很慢,要1秒多时间,将localhost改成127.0.0.1,速度提升到0.02秒

5、php获取变量的类型函数:gettype()

6、搭建测算系统:后台打开报错:Setting 'ADMIN' is not found,原因很简单,数据库连接信息填错了,仔细检查一下

7、js获取所有input元素,添加点击事件和移开事件

var inp = document.querySelector('input');
var bodyHeight = document.body.offsetHeight;
inp.onclick = function(ev) {
    document.querySelector('body').style.height = '99999px';
    inp.style.position = 'static';
    setTimeout(function() {
        document.body.scrollTop = document.documentElement.scrollTop = inp.getBoundingClientRect().top + pageYOffset - 5;
    }, 50);
    window.addEventListener('touchmove', fn, false);
}

inp.onblur = function() {
        document.querySelector('body').style.height = "auto"
        document.querySelector('body').removeAttribute('style')
        window.removeEventListener('touchmove', fn, false)
    }

8、页面自动刷新:<meta http-equiv="refresh" content="5">

9、js判断数据类型 console.log(typeof res);

10、js接收json格式的字符串,并且转换成json格式:

var result;
result = JSON.parse(res);

11、php实现页面跳转:header("Location:'http://www.0736sx.com'");

12、php的$_SESSION[$baidu],session值的名可以是变量,但是名一定要以英文字母开头。看下面的代码,第一次打开页面,$_SESSION[$baidu]值为空,执行一次ajax,重复刷新页面将不会执行ajax

<?php

session_start();
$oid = $_REQUEST['oid'];
$baidu = 'baidu'.$oid;

?>

<script>
    $(function(){
        var baidu_notify = '<?php echo $_SESSION[$baidu]?>';
        if(baidu_notify == ''){
            $.ajax({
                url:"http://xxx.xxx.com/APIDemo.php",
                //dataType:"json",   //返回格式为json
                //async:true,//请求是否异步,默认为异步,这也是ajax重要特性
                //data:{"bd_vid":"<{$bd_vid}>"},    //参数值 
                type:"GET",   //请求方式
                success:function(e){
                    console.log("success");
                },
                error:function(e){
                    console.log("hits,sorry");
                }
            });  
        }
    });
</script>

<?php

$_SESSION[$baidu] = 'is_baidu_notify';    //第一次打开页面,回传给百度,重新刷新将不会回传给百度

?>

11、js计算2个日期之间的年数

console.log('1987-2-15','2024-9-1')

//计算2个日期之间的年数
function getDaysDiff(date1, date2) {
  const date1Obj = new Date(date1);
  const date2Obj = new Date(date2);
  const diff = Math.abs(date1Obj.getTime() - date2Obj.getTime());
  const diffYears = Math.floor(diff / (1000 * 60 * 60 * 24 * 365));
  return diffYears;
}

12、css显示换行的代码:white-space: pre-wrap;

13、uniapp,付款时弹出的面板没有小数点,将type = number 设置为 digit 即可

14、fastadmin表单查询时,searchList 通过 $.getJSON('models/index/getMember') 方法获取数据表里面的数据,截图如下

image.png

image.png

image.png

15、textarea输入带有换行的内容,提交保存到数据库后,不显示换行,这个时候需要利用js,在提交之前先将textarea输入带有换行的内容处理一下后再提交

<form id="form1" name="form1" action="pinglun.php" method="post" onsubmit="return verify()">
    <textarea id="pl_content" name="content" class="comment_desc"></textarea>
    <input type="hidden" name="uid" value="<?php echo $_SESSION['uid']?>">
    <input type="hidden" name="mid" value="<?php echo $id?>">
    <input type="hidden" name="score" id="score1" value="">
    <input type="submit" class="btn-comment" style="width: 150px;height: 35px" value="提交"> 
</form>

<script>

function verify() {
    
    //回车转换行
    var content=document.getElementById("pl_content").value;
    content=content.replace('
','<br />');
    document.getElementById("pl_content").value=content;
    
}

</script>

16、js数组中去除重复元素:arr = Array.from(new Set(arr))//去除数组中重复的元素



返回顶部