开发杂记

1. Ajax 请求
$.getrdsqlResult = function() {
        var nocoderd = $.ajax({
            type: "POST",
            url: '<?php echo $this->ModuleUrl ?>/report/selectdisplay',
            async: false,
            cache: false,
            data: $("#testform").serializeArray(),
            beforeSend: function() {
                add_part_loading(11, true);
            },
            success: function(msg){
                if (msg.error > 0){
                    $('#enterSql').parent().addClass('has-error');
                    $('#enterSql').siblings().html(msg.msg);
                    // $('#selectDisplay').css('display','none');tableResult
                    $(".resultTab").hide();
                    $("#tableResult").html("");
                    $('#formCodeDiv').css('display','none');
                    return false;
                }else{
                    $('#enterSql').parent().removeClass('has-error');
                    $('#enterSql').siblings().html('');
                    // if project type is 0 then not need add this function
                        $('#enterSql').attr('onfocus', 'changeSql()');
                }
            }
        }).done(function(){
            add_part_loading(11, false); 
        }).responseText;
        return nocoderd;
    };

我们从服务器接收了以下数据 { “name”:“runoob”, “alexa”:10000, “site”:“www.runoob.com” },一般情况下都是string的,‘{ “name”:“runoob”, “alexa”:10000, “site”:“www.runoob.com” }’,需要使用var obj = JSON.parse(’{ “name”:“runoob”, “alexa”:10000, “site”:“www.runoob.com” }’);之后再获取object的数据,如obj.name; 如果不进行JSON.parse,那么直接获取里面的name值,是undefined

2. 点击button 刷新了 整个页面

有时候在点击button的时候发现竟然刷新了整个页面,这是因为type没有设定

<button type="button">Save</button>
3. select2 使用多选multiple属性时,在form提交时候只能获取其中一个值
  1. 如果select 使用了multiple时,在php开发中,一定要将name设置为数组形式,如name = "chartType[]"
<select class="dataTypeSelect" name="dataDisplayType[]" multiple="multiple">
</select>
  1. multiple 的select2 使用数据库data回显赋值时,一定要在点击事件里面进行赋值,如果在$(document).ready里赋值,那么会出错,再重新获取一下该select2的val值,发现是null。
    我这边的业务select2 插件在D的tab里,需要实现multiple的回显。ABCD均在一个页面上,点击不同的tab显示不同的内容。最开始的思路就是在直接进入A的时候,就把从数据库请求来的数据放在了一个hidden的input框里,在初始化的时候直接赋值,虽然是赋值成功了,可是再重新获取一下该select2的val值,发现是null在这里插入图片描述通过看官方文档,赋值均在click事件里,所以,我换了一个思路,就是在点击D的时候,给select2赋值。
Html: 
       <input type="text" id="displayData" hidden value="<?php echo ($this->info['report']['sqlStatement'][0]['DataDisplayType'])?>">
			<div class="col-sm-7">
					<select class="dataTypeSelect" name="dataDisplayType[]" multiple="multiple">
					</select>
			</div>	
JS:
$(".tbox li[href='#D']").on("click",()=>{
        var displayType = $("#displayData").val();
        if(displayType.indexOf(",")){
            var typeArray = displayType.split(",");
            $(".dataTypeSelect").val(typeArray).trigger("change");
        }else{
            $(".dataTypeSelect").val(displayType).trigger("change");
        }
    })
4. select2 赋值
  1. mulitple 赋值:
    如果值只有一个,则 $(".dataTypeSelect").val("1").trigger("change");
    如果值只有多个,则$(".dataTypeSelect").val(["1","2"]).trigger("change");
    Note : 1,2 为 select2 数据源Data的id值。数据源要按照select2 官方文档指定的格式去赋值,可以参考我的这篇文章Select2 Attention
  1. 非multiple赋值,有两种方式,第一种有时候赋值会不成功,请尝试第二种,和multiple赋值是一样的:
  1. $("select[name='chart[chartType]']").select2("val", 2);
  2. $("select[name='chart[chartType]']").val("2").trigger("change");
5. ion.rangeSlider 插件初始化和赋值

RangeSlider 官方文档

初始化:

<input type="text" class="js-range-slider" name="my_range" value="" />

 $(".js-range-slider").ionRangeSlider({
        type: "double",
        min: 0,
        max: 1000,
        from: 200,
        to: 500,
        grid: true
    });

更新赋值:

虽然这个插件用在input框上,获取该input框的value值时,和正常的input框获取时一样,(".js-range-slider").val(), 但是再从数据库拿到数据后,想要改变rangeslider的值时,发现直接用(".js-range-slider").val(23)f赋值不成功,通过调查,采用以下的方式可以赋值成功。

let my_range = $(".js-range-slider").data("ionRangeSlider");
    
    // 3. Update range slider content (this will change handles positions)
    my_range.update({
        from: 300,
        to: 400
    });
6. 前端传一个Json的字符串到php后台,用json_decode解析字符串为null

php后台接收到前台的字符串为 $chartData = "{\"barRotation\":45,\"barDepth\":15,\"barAngle\":20,\"barFillAlphas\":0.8}", 用json_decode($chartData) 解析一直为null.
正确的 的做法是在解析之前应该先将转义字符去掉,写法为json_decode(stripslashes($chartData))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值