Web前端开发之前后端交互07——同源、跨域、JSONP、防抖、节流

目录

同源:

跨域:

 跨域请求:​

 JSONP:

JQ中的JSONP:

防抖:

节流:


同源:

 

跨域:

 

 跨域请求:

 JSONP:

 跨域请求报错:

 两个不同域的js: 

  

JQ中的JSONP:

防抖:

 

 防抖实际上就是一种利用settimeout来不断清除定时器和启动定时器的方法。

下面给出一个类似某宝搜索框的下拉内容实现代码:

<button class="btn-get-TBSearch">jsonp get taobao Search</button>
<input type="text" name="searchBar" id="searchBar" placeholder="搜索">
<div class="tpl-List"></div>
<script type="text/html" id="tpl-List">
	<ul>
		{{each data}}
		<li>{{$value}}</li>
		{{/each}}
	</ul>
</script>

<script>
//jsonp请求淘宝搜索接口
    function getSuggestList(userWrite) {
        $.ajax({
            url: 'http://suggest.taobao.com/sug?q=' + userWrite,
            dataType: 'jsonp',
            success: res => {
                // console.log(res)
                getList = res
            }
        })
    }

    //防抖
    let PRMtimer=null
    function preventReqMore(userWrite){
        clearTimeout(PRMtimer)
        PRMtimer=setTimeout(()=>{
            getSuggestList(userWrite)
        },2000)
    }

    let getList = []
    let userTypeIn=''
    $('#searchBar').on('input propertychange',function () {
        userTypeIn=$(this).val()
        $('.btn-get-TBSearch').click()
    })
    $('.btn-get-TBSearch').on('click', e => {
        preventReqMore(userTypeIn)
        // console.log(getList)
        //这里我们的ajax完成方法作用于当前作用域中,不会影响其它ajax
        $(document).ajaxComplete(function () {
            if (getList !== []) {
                // console.log(getList)
                let newList=[]
                $.each(getList,function (index,item) {
                    // console.log(item)
                    $.each(item,function (index1,item1) {
                        // console.log(item1)
                        $.each(item1,function (index2,item2) {
                            if (index2===0){
                                newList.push(item2)
                            }
                        })

                    })
                })
                // console.log(newList)
                let templateData={
                    data:newList
                }
                let getHtml = template('tpl-List', templateData)
                $('.tpl-List').html(getHtml)

            } else {
                console.log('null')
            }
        })
    })
</script>

 其中用到了防抖,jsonp等思想,请耐心领会。

节流:

 

 鼠标跟踪事件优化:

	//节流阀
	let MouseMoveTimer=null
	$(document).on('mousemove',function (e) {
        if (MouseMoveTimer===null){
            MouseMoveTimer=setTimeout(function () {
                $('.yellowPoint').css('top',e.pageY).css('left',e.pageX)
                console.log(e.pageX,e.pageY)
                MouseMoveTimer=null
            },10)
        }else return 0
    })

 节流和防抖区别:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

言行物恒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值