本来从一开始接触编程开始,自己就一直写后端,但是对于前端真的不会,但是没办法呀,公司
要做,所以,好吧,开始了写一写简单的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来列出了数据库中的数据,我们不需要关心,因为这个
是只关心返回值的正确性,而由于异步调用,只是调用这一块的数据,对整个页面的数据
并没有进行修改,所以我们不需要考虑这些,可以留给前端的人进行考虑

javascript的js调用的更多相关文章

  1. JS调用水晶报表打印翻页按钮事件

    默认的水晶报表打印按钮.翻页按钮太小,并且样式不好调整,考虑自己做一个按钮,然后调用水晶报表的按钮事件. 在实际操作中发现可以在.net按钮的服务器端事件中调用翻页方法: CrystalReportV ...

  2. 意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提交的javascript代码! 不敢藏私,特与大家分

    最近研发BDC 云开发部署平台的数据路由及服务管理器意外作出了一个javascript的服务器,可以通过js调用并执行任何java(包括 所有java 内核基本库)及C#类库,并最终由 C# 执行你提 ...

  3. 【HANA系列】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列]SAP HANA XS使用Jav ...

  4. iOS JS 交互之利用系统JSContext实现 JS调用OC方法以及Objective-C调用JavaScript方法

    ios js 交互分为两块: 1.oc调用js 这一块实现起来比较简单, 我的项目中加载的是本地的html,js,css,需要注意的是当你向工程中拖入这些文件时,选择拷贝到工程中,(拖入的文件夹是蓝色 ...

  5. 【HANA系列】【第六篇】SAP HANA XS使用JavaScript(JS)调用存储过程(Procedures)

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[HANA系列][第六篇]SAP HANA XS ...

  6. iOS开发--JS调用原生OC篇

    JS调用原生OC篇 方式一(反正我不用) 第一种方式是用JS发起一个假的URL请求,然后利用UIWebView的代理方法拦截这次请求,然后再做相应的处理. 我写了一个简单的HTML网页和一个btn点击 ...

  7. 通过js调用android原生方法

    有时候我们有这样一个需求,监听html中控件的一些事件.例如点击html中某个按钮,跳转到别的activity,复制某段文本. 首先是对webview的设置: myWebView = (WebView ...

  8. js调用php和php调用js的方法举例

    js调用php和php调用js的方法举例1 JS方式调用PHP文件并取得php中的值 举一个简单的例子来说明: 如在页面a.html中用下面这句调用: <script type="te ...

  9. android webView开发之js调用java代码示例

    1.webView设置 webView.getSettings().setJavaScriptEnabled(true);//设置支持js webView.addJavascriptInterface ...

随机推荐

  1. vue中 eCharts 自适应容器

    在 vue 脚手架开发中,echarts图表自适应容器的方法: 父组件: <template> <div class="statistics_wrap"> ...

  2. Python 爬虫实战(二):使用 requests-html

    Python 爬虫实战(一):使用 requests 和 BeautifulSoup,我们使用了 requests 做网络请求,拿到网页数据再用 BeautifulSoup 解析,就在前不久,requ ...

  3. CODESOFT条码设计软件如何隐藏数据源方法

    作为强大的条码标签设计软件,用户在用CODESOFT设计条码标签时,有时需要根据实际情况,将条码数据源隐藏,也就是使设计与打印出来的条形码下不带有数据.那么这要怎么在CODESOFT中实现呢?下面,小 ...

  4. TP5.1:连接数据库(全局配置、动态配置、DSN配置)

    前提: (1)在app\index\controller文件下新建一个名为Connect.php的控制器文件 (2)建立一个名为user_curd数据库,里面有一张user表,表内容为: 通过全局配置 ...

  5. vs2008使用mysql链接错误

    原因是因为安装了64位的mysql,而开发工具室32位的,需要安装32位的开发库就可以了

  6. Graylog安装操作

    Graylog安装操作 实验环境centos7.5系统  mem:4-8G       disk:50G 关闭selinux以及firewalld 一.准备环境 1.1.java环境 下载java的j ...

  7. Android(java)学习笔记68:使用proguard混淆android代码

    1. 当前是有些工具比如apktool,dextojar等是可以对我们android安装包进行反编译,获得源码的.为了减少被别人破解,导致源码泄露,程序被别人盗取代码,等等.我们需要对代码进行混淆,a ...

  8. Flashing Fluorescents(状压DP)

    Flashing Fluorescents 时间限制: 1 Sec  内存限制: 128 MB提交: 56  解决: 19[提交] [状态] [讨论版] [命题人:admin] 题目描述 You ha ...

  9. 20145238 —《Java程序设计》—第5周学习总结

    20145238 <Java程序设计>第5周学习总结 教材学习内容总结 第八章异常处理 8.1.1使用try.catch ·教材范例用户连续输入整数,输入0结束后显示输入数的平均值(代码如 ...

  10. R语言网络爬虫学习 基于rvest包

    R语言网络爬虫学习 基于rvest包 龙君蛋君:2015年3月26日 1.背景介绍: 前几天看到有人写了一篇用R爬虫的文章,感兴趣,于是自己学习了.好吧,其实我和那篇文章R语言爬虫初尝试-基于RVES ...