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来列出了数据库中的数据,我们不需要关心,因为这个
是只关心返回值的正确性,而由于异步调用,只是调用这一块的数据,对整个页面的数据
并没有进行修改,所以我们不需要考虑这些,可以留给前端的人进行考虑

原文地址:https://www.cnblogs.com/wnbahmbb/p/6568334.html