• javascript的js调用


    本来从一开始接触编程开始,自己就一直写后端,但是对于前端真的不会,但是没办法呀,公司
    要做,所以,好吧,开始了写一写简单的javascript的内容
    其中,在xxx.jsp页面中出现了这个

    1 <a class="btn btn-default btn-xs" href="javascript:;" mi-node-data="#{id}" mi-node-level="#{priority}" mi-node-type="level" mi-node-param="adCreativeId">
    2     <i class="fa fa-level-up" aria-hidden="true"></i>
    3 </a>

    还有这个

     1    <div id="level" style="padding-left:10px; padding-right:10px; display:none;" >
     2         <form>
     3             <div class="row form-group">
     4                 <div class="col-md-offset-2 col-sm-1 form-control-static"></div>
     5                 <div class="col-sm-8">
     6                     <div class="form-group">
     7                         <label class="col-sm-3 control-label">优先级:</label>
     8                         <div class="col-sm-6 mi-radio-right">
     9                             <select class="form-control" id="input_level" name="level">
    10                                 <c:forEach var="value" items="${levels}">
    11                                     <option value="${value}" <c:if test="${not empty adCreative and adCreative.priority eq value }">selected="selected"</c:if>>${value} </option>
    12                                 </c:forEach>
    13                             </select>
    14                         </div>
    15                     </div>
    16                 </div>
    17             </div>
    18             <div class="row form-group">
    19                 <div class="col-md-offset-2 col-sm-1 form-control-static"></div>
    20                 <div class="col-sm-8">
    21                     <div class="form-group">
    22                         <label class="col-sm-8 control-label">备注:最高优先级为1,最低优先级为5</label>
    23                     </div>
    24                 </div>
    25             </div>
    26         </form>
    27     </div>

    然后我们找到这个这个页面所依赖的js,这个js中其中一段代码如下:

     1 $("body").on('click' ,'a[mi-node-type="level"]', function(){
     2         var adCreativeId = $(this).attr('mi-node-data');
     3         var level = $(this).attr('mi-node-level');
     4         $("#input_level").val(level);
     5 
     6         var lay = modConfirm({
     7             title: '',
     8             content:'',
     9             yesBtn: '确 定',
    10             showsmall: ''
    11         })
    12         lay.find('.modal-body').append($("#level").show());
    13 
    14         lay.on("onYes",function(){
    15             var level = $("#input_level").val().trim();
    16             if (level == null || level == ""){
    17                 modAlert({
    18                     title : '提示',
    19                     content : '优先级不能为空!',
    20                 })
    21                 return;
    22             }
    23 
    24             $.ajax({
    25                 url: '/schedule/adcreative/updateCreativeLevel',
    26                 dataType: 'json',
    27                 cache: false,
    28                 type: 'get',
    29                 data : {
    30                     adCreativeId : adCreativeId,
    31                     level:level,
    32                     userId: GLOBAL.userId,
    33                     serviceToken: GLOBAL.serviceToken
    34                 },
    35 
    36                 success: function(json) {
    37                     if (json.success == true) {
    38                         modAlert({
    39                             title : '提示',
    40                             content : '修改优先级成功'
    41                         })
    42                         table.reset({});
    43                     } else {
    44                         modAlert({
    45                             title : '提示',
    46                             content : json.failMsg
    47                         })
    48                     }
    49                 },
    50                 error: function() {
    51                     modAlert({
    52                         title : '提示',
    53                         content : '网络异常,请稍后在试。',
    54                     })
    55                 }
    56             });
    57 
    58         });
    59     });

    从这两段代码上来看,我们有如下几个问题
    1.为什么这个jsp中的代码知道调用的是js中的这个js.
    我们可以看到在xxx.jsp中出现了mi-node-type="level"则刚好对应xxx.js中的 $("body").on('click' ,'a[mi-node-type="level"]', function(){
    的level则,就可以确定调用这一块代码
    2.知道了这个调用这个xxx.js中的这段代码,可以解释一下里面的数据
    其中 $("#input_level").val(level);这个说的是在xxx.jsp中放入数据

    1 <select class="form-control" id="input_level" name="level">
    2         <c:forEach var="value" items="${levels}">
    3             <option value="${value}" <c:if test="${not empty adCreative and adCreative.priority eq value }">selected="selected"</c:if>>${value} </option>
    4         </c:forEach>
    5 </select>

    其中这个$("#input_level")里面放的是select的总量
    3.xxx.js中lay.find('.modal-body').append($("#level").show());的这个代码是说在这个页面后面添加id为level的页面,也就是xxx.jsp中的
    <div id="level" style="padding-left:10px; padding-right:10px; display:none;" >
    4.然后接下来就是ajax的调用,这个其实就是返回json的成功与失败以及信息

     1  $.ajax({
     2                 url: '/schedule/adcreative/updateCreativeLevel',
     3                 dataType: 'json',
     4                 cache: false,
     5                 type: 'get',
     6                 data : {
     7                     adCreativeId : adCreativeId,
     8                     level:level,
     9                     userId: GLOBAL.userId,
    10                     serviceToken: GLOBAL.serviceToken
    11                 },
    12 
    13                 success: function(json) {
    14                     if (json.success == true) {
    15                         modAlert({
    16                             title : '提示',
    17                             content : '修改优先级成功'
    18                         })
    19                         table.reset({});
    20                     } else {
    21                         modAlert({
    22                             title : '提示',
    23                             content : json.failMsg
    24                         })
    25                     }
    26                 },
    27                 error: function() {
    28                     modAlert({
    29                         title : '提示',
    30                         content : '网络异常,请稍后在试。',
    31                     })
    32                 }
    33             });
    34 
    35         });

    其中
    url:指的是这个ajax的调用异步调用后台的那一段代码
    dataType:返回的类型是json的类型
    cache:没有缓存数据
    type:得到数据的方式
    data : {
    adCreativeId : adCreativeId,
    level:level,
    userId: GLOBAL.userId,
    serviceToken: GLOBAL.serviceToken
    },
    里面传入数据的参数,我们可以在controller里面只接收其中的一部分数据就可以了
    其中我们可以只接收adCreativeId的这个数据

     1  success: function(json) {
     2     if (json.success == true) {
     3         modAlert({
     4             title : '提示',
     5             content : '修改优先级成功'
     6                 })
     7         table.reset({});
     8     } else {
     9         modAlert({
    10             title : '提示',
    11             content : json.failMsg
    12             })
    13     }
    14         },
    15     error: function() {
    16         modAlert({
    17             title : '提示',
    18             content : '网络异常,请稍后在试。',
    19         })
    20     }

    其中success是成功的时候返回的值
    erro是失败的时候返回的值
    table.reset({});这个是重新刷新页面的方法,应为有些页面只有在刷新一下,才可以看到真实的值

    接下来,我们来调用如何调用function的方法
    接下来我们先来看xxx.jsp中的一部分代码
    第一段:

    1 <a class="btn btn-default btn-xs" href="javascript:;" mi-node-data="#{campaignId}" mi-node-level="" mi-node-type="alllevel" mi-node-param="campaignId">
    2     <i class="fa fa-level-up" aria-hidden="true"></i>
    3 </a>

    第二段:

     1 <div id="alllevel" style="padding-left:10px; padding-right:10px; display:none;" >
     2     <form>
     3         <div class="row form-group">
     4             <div class="col-md-offset-2 col-sm-1 form-control-static"></div>
     5             <div class="col-sm-8">
     6                 <div class="form-group">
     7                     <label class="col-sm-3 control-label">优先级:</label>
     8                     <div class="col-sm-6 mi-radio-right">
     9                         <select class="form-control" id="input_level" name="level">
    10                             <c:forEach var="value" items="${levels}">
    11                                     <option value="${value}" selected="selected">${value} </option>
    12                             </c:forEach>
    13                         </select>
    14                     </div>
    15                     </div>
    16                 </div>
    17             </div>
    18         <div class="row form-group">
    19             <div class="col-md-offset-2 col-sm-1 form-control-static"></div>
    20             <div class="col-sm-8">
    21                 <div class="form-group">
    22                     <label class="col-sm-8 control-label">备注:最高优先级为1,最低优先级为5</label>
    23                 </div>
    24             </div>
    25         </div>
    26     </form>
    27 </div>

    在xxx.js中调用的代码

     1  $("body").on('click' ,'a[mi-node-type="alllevel"]', function(){
     2         var campaignId = $(this).attr('mi-node-data');
     3             $.ajax({
     4                 url: '/schedule/campaign/getCampaignMinLevel',
     5                 dataType: 'json',
     6                 cache: false,
     7                 type: 'get',
     8                 data : {
     9                     campaignId : campaignId,
    10                     userId: GLOBAL.userId,
    11                     serviceToken: GLOBAL.serviceToken
    12                 },
    13 
    14                 success: function(json) {
    15                     if (json.success == true) {
    16                         func(campaignId,json.result)
    17                     } else {
    18                         modAlert({
    19                             title : '提示',
    20                             content : json.failMsg
    21                         })
    22                     }
    23                 },
    24                 error: function() {
    25                     modAlert({
    26                         title : '提示',
    27                         content : '网络异常,请稍后在试。',
    28                     })
    29                 }
    30             });
    31     });
    32 
    33     var func = function(myCampaignId,myLevel){
    34         var campaignId = myCampaignId;
    35         var level = myLevel;
    36 
    37         $("#input_level").val(level);
    38         var lay = modConfirm({
    39             title: '',
    40             content:'',
    41             yesBtn: '确 定',
    42             showsmall: ''
    43         })
    44         //下面这行语句就是把下面的jsp的弹出窗口添加进来
    45         lay.find('.modal-body').append($("#alllevel").show());
    46 
    47         lay.on("onYes",function(){
    48             var level = $("#input_level").val().trim();
    49             if (level == null || level == ""){
    50                 modAlert({
    51                     title : '提示',
    52                     content : '优先级不能为空!',
    53                 })
    54                 return;
    55             }
    56 
    57             $.ajax({
    58                 url: '/schedule/campaign/updateCampaignLevel',
    59                 dataType: 'json',
    60                 cache: false,
    61                 type: 'get',
    62                 data : {
    63                     campaignId : campaignId,
    64                     level:level,
    65                     userId: GLOBAL.userId,
    66                     serviceToken: GLOBAL.serviceToken
    67                 },
    68 
    69                 success: function(json) {
    70                     if (json.success == true) {
    71                         modAlert({
    72                             title : '提示',
    73                             content : '修改优先级成功'
    74                         })
    75                     } else {
    76                         modAlert({
    77                             title : '提示',
    78                             content : json.failMsg
    79                         })
    80                     }
    81                 },
    82                 error: function() {
    83                     modAlert({
    84                         title : '提示',
    85                         content : '网络异常,请稍后在试。',
    86                     })
    87                 }
    88             });
    89 
    90         });
    91     };

    其中我们通过xxx.jsp中的mi-node-type来找到xxx.js来找到这段代码
    然后成功的时候调用的是这个func(campaignId,json.result)方法,
    我们可以看到这个func的方法的参数的第二个就是json的result的值,
    是由于json都是k-v的类型的数据,所有我们可以通过json.result的数据值
    然后后面都可以,我们这里面要记住的是,我们每一个人通过ajax的时候,
    其实这个时候,我们每一个人都只需要关心json的是否成功以及msg的数据即可,
    我们不需要想是否通过json来列出了数据库中的数据,我们不需要关心,因为这个
    是只关心返回值的正确性,而由于异步调用,只是调用这一块的数据,对整个页面的数据
    并没有进行修改,所以我们不需要考虑这些,可以留给前端的人进行考虑

  • 相关阅读:
    docker容器如何配置hosts文件?
    如何提高LaTeX的编译速度?
    VS编译时提示“无法查找或打开 PDB 文件”的解决方法
    全网最全电子书下载汇总
    chrome谷歌浏览器扩展程序推荐: 一键读图OCR
    关于研究生英文论文写作的一点思考
    小狼毫输入法的详细配置大全
    java的char类型
    Android APP 自动更新实现
    java中double数据失精度(失真)问题处理
  • 原文地址:https://www.cnblogs.com/wnbahmbb/p/6568334.html
Copyright © 2020-2023  润新知