TP5 前端小知识点总结(后续会不断继续更新)

一、ajax的几种形式

1、通过$.ajax方式
$.ajax({
	type:"post", //HTTP请求类型
	url:"{:url('Index/index/register')}", //数据传输的控制器方法
	data:{username:'username',password:'password'}, //传递参数
	dataType:'json', //服务器返回json格式数据
	headers:{'Content-Type':'application/json'},	              
	success:function(data){
		//服务器返回响应,根据响应结果,进行数据处理;
		...
	},
	error:function(data){
		//异常处理;
		console.log(data);
	}
});
2、$.post() 方法是对 $.ajax 的一个简化方法,直接使用POST请求方式向服务器发送数据,代码更为简洁,如下:
$.post("{:url('Index/index/register')}",{
		username:'username',
		password:'password'
	},function(data){
		//服务器返回响应,根据响应结果,分析是否登录成功;
		...
	}, 'json'
);
3、$.get() 方法和 $.post() 方法类似,只不过是直接使用GET请求方式向服务器发送数据
$.get("{:url('Index/index/register')}",{
		category:'news'
	},function(data){
		//获得服务器响应
		...
	},'json'
);
4、如上 $.get() 方法和如下 $.ajax() 方法效果是一致的:
$.ajax({
	type:'get',//HTTP请求类型
	url:"{:url('Index/index/register')}",
	data:{category:'news'},
	dataType:'json',//服务器返回json格式数据
	success:function(data){
		//获得服务器响应
		...
	}
});
5、$.getJSON() 方法是在 $.get() 方法基础上的更进一步简化,限定返回json格式的数据,其它参数和 $.get() 方法一致
$.getJSON("{:url('Index/index/register')}",{category:'news'},function(data){
		//获得服务器响应
		...
	}
);

二、ajax的几种应用场景

1、前端渲染页面、点击事件以及处理方法
{volist name="list" id="vo"}
<tr>
    <td align="center">{$vo.id}</td>
    <td align="center">{$vo.username}</td>
    <td align="center">
        <a href="" class="btn btn-primary btn-sm shiny">
            <i class="fa fa-edit"></i> 编辑
        </a>
        // 当id为1时,不显示删除标签
        {if condition="$vo.id neq 1"}
        <a href="javascript:void(0)" onClick="warning($vo['id'],$vo['username'])" class="btn btn-danger">
            <i class="fa fa-trash-o"></i>删除
        </a>
        {/if}
    </td>
</tr>
{/volist}
<script type="text/javascript">  
    function warning(id,username){ 
        $.ajax({  
            type:"post",  
            url:"{:url('Index/index/test')}",  
            data: {'id':id,'username':username},
            success:function(data){  
				//获得服务器响应做数据处理
				...
            }  
        });  
    }  
</script>
2、ajax 上传图片(这里前端框架是MUI)
<form class="mui-input-group">
	<div class="van-uploader">
		<div class="van-uploader__wrapper">
			<div class="van-uploader__upload">
				<i class="van-icon van-icon-plus van-uploader__upload-icon"></i>
				<input multiple="multiple" type="file" accept="image/*" class="van-uploader__input" />
			</div>
			<div class="van-uploader__preview" style="display: none;">
                <div class="van-image van-uploader__preview-image" style="overflow: hidden; border-radius: 4px;">
                    <img class="van-image__img" style="object-fit: cover;">
                </div>
                <i class="van-icon van-icon-clear van-uploader__preview-delete"></i>
            </div>
		</div>
	</div>
</form>
<script type="text/javascript">
	$('.van-uploader__input').change(function () {
		var formData = new FormData();
		formData.append("file", this.files[0]);
		$.ajax({
			type: "post",
			url: "{:url('Task/upload')}",
			data: formData,
			dataType: 'json',
			cache:false,
			processData: false,  // 告诉jQuery不要去处理发送的数据
			contentType: false,  // 告诉jQuery不要去设置Content-Type请求头
			success: function (res) {
				// console.log(res);
				if (res.code == 200) {
					$('.van-uploader__upload').hide();
					$('.van-uploader__preview').show();
					$('.van-image__img').attr('src', res.url);
					$('#imageUrl').val(res.path);
				} else {
					mui.toast(res.msg, {duration: 'short', type: 'div'});
				}
			}
		})
	})
</script>
注意:文件上传必须用FormData对象,是必须
processData参数设置为false阻止jquery把参数序列化为字符串
contentType设置为false避免jquery对其进行操作
3、ajax 序列化提交表单(这里前端框架是MUI)—serialize()
<form class="mui-input-group" id="formData">
    <div class="mui-card">
        <div class="mui-card-header mui-badge-warning mui-badge-inverted">粉丝基础信息</div>
        <div class="mui-card-content">
            <div class="mui-table-view-cell flexItems">
                <label><span class="mui-badge mui-badge-danger mui-badge-inverted">*</span>买手编号</label>
                <span class="full">
                    <input type="text" name="number" id="number" placeholder="请填写粉丝编号">
                </span>
            </div>
            <div class="mui-table-view-cell flexItems">
                <label><span class="mui-badge mui-badge-danger mui-badge-inverted">*</span>真实姓名</label>
                <span class="full">
                    <input type="text" name="name" id="name" placeholder="请填写真实姓名">
                </span>
            </div>
            <div class="mui-table-view-cell flexItems">
                <label><span class="mui-badge mui-badge-danger mui-badge-inverted">*</span>手机号码</label>
                <span class="full">
                    <input type="text" name="mobile" id="mobile" placeholder="请填写手机号码" maxlength="11" onkeyup="this.value= this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''">
                </span>
            </div>
            <div class="mui-table-view-cell flexItems">
                <label><span class="mui-badge mui-badge-danger mui-badge-inverted">*</span>QQ号码</label>
                <span class="full">
                    <input type="text" name="qq" id="qq" placeholder="请填写QQ号码" onkeyup="this.value= this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''">
                </span>
            </div>
        </div>
    </div>
    <div class="mui-card">
        <div class="btn-full mui-btn mui-btn-primary">确定提交</div>
        <!-- <button type="button" class="btn-full mui-btn mui-btn-primary">确定提交</button> -->
    </div>
</form>
<script type="text/javascript">
    $(".mui-btn-primary").click(function(){
    	// 第一种提交方式
        $.ajax({
            type: "post",
            url: "{:url('Fans/ajaxPostAdd')}",
            data: $("#formData").serialize(),
            success: function(e){
            	//服务器返回响应,根据响应结果,分析是否请求成功;
                if(e.code == 200){
                    mui.toast(e.msg, {duration: 'short', type: 'div'});
                    setTimeout(()=>{
                        window.location.href = "{:url('Fans/index')}";
                    }, 1500)
                }else{
                    mui.toast(e.msg, {duration: 'short', type: 'div'});
                }
            },
            error : function() {
                mui.toast("网络异常!", {duration: 'short', type: 'div'});
            }
        });
        
		// 第二种提交方式
		$.post("{:url('Fans/ajaxPostAdd')}", $("#formData").serialize(), function(e){
			//服务器返回响应,根据响应结果,分析是否请求成功;
            if(e.code == 200){
                mui.toast(e.msg, {duration: 'short', type: 'div'});
                setTimeout(() => {
                    window.location.href = "{:url('Fans/index')}";
                }, 1500)
            }else{
                mui.toast(e.msg, {duration: 'short', type: 'div'});
            }
		},'json');
    })
</script>
TP5 url链接带参的常用写法
window.location.href = "{:url('Fans/index', ['id' => 1])}";
window.location.href='{:url("Index/detail")}?id=' + 1;

注意:H5序列化提交表单,form表单内不能用button作为提交按钮,否则无法提交,在form表单外可以用button提交

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值