java变量和javascript变量之间的传递示例

最近在用jsp做一个网站,其间涉及到java变量和javascript变量之间的互换,虽然网上资料众多,但是众说纷纭,并且很多都是带有误导性,做了许多尝试,终于比较清楚的搞懂了这个问题。通俗一点来讲,就是说java代码是运行在服务器上的,返回的值只是静态的存在于页面,而javascript是脚本语言,是运行在客户端的!它们是两种完全不同的语言,变量不能直接进行交换,但是通过一定的方式,变量可以传递。

java变量传递给javascript变量,这个比较简单,就是平时的普通方法就好:


代码如下:

var cnt = <%=number%>;

注意别漏掉等号!这个没什么问题。

javascript变量传递给Javab变量,这个稍微复杂一些,但是清楚了原理其实也很简单,这边主要是通过表单提交以及表单元素来获取和进行操作:


代码如下:

<script language="javascript">
function button_click(cnt) {
++cnt;
document.submitForm.msg.value = cnt;
document.submitForm.submit();
}
</script>

代码如下:

<%
number = request.getParameter("msg");
if(number==null)
number="1";
RdData.setIndex(number);
RdData.readData();
out.println("<br />");
out.print(RdData.getIndex() + ".");
out.print(RdData.getTitle());
out.println("<br />");
out.println("A." + RdData.getStrA());
out.println("<br />");
out.print("B." + RdData.getStrB());
out.println("<br />");
out.print("C." + RdData.getStrC());
out.println("<br />");
out.print("D." + RdData.getStrD());
%>
<input name="index" type="text" value="<%=RdData.getIndex()%>" />
<input type="button" value="btn" name="bt" onclick="button_click(<%=number%>)">
<form name="submitForm">
<input type="hidden" name="msg" value=<%=RdData.getIndex()%>/>
</form>

特别注意表单和javascript代码部分!通过表单的隐藏元素把数据库取出来的一个数据传给处理函数,进行相关操作后,提交表单,java代码通过request.getParameter()获取,就OK啦~~~其实当时挺纠结的一个问题是变量不同步,因为我要实现的功能是每点击按钮一次计数器加一并对数据库进行一次读操作,如果计数器不一致就会直接导致读取的顺序问题,刷新页面是可以解决问题,但是一直刷新也不是个好办法。于是想到传一个参数进去,OK,好了

时间: 2014-05-13

深入理解javascript变量声明

相对于C/C++来说,ECMAScript里的for循环并不能创建一个局部的上下文. 复制代码 代码如下: for (var k in {a: 1, b: 2}) {   alert(k); } alert(k); // 尽管循环已经结束但变量k依然在当前作用域 任何时候,变量只能通过使用var关键字才能声明.   上面的赋值语句:   a = 10; 这仅仅是给全局对象创建了一个新属性(但它不是变量)."不是变量"并不是说它不能被改变,而是指它不符合ECMAScript规范中的变量概

javascript(jquery)利用函数修改全局变量的代码

我是将当前页用一个全局变量存储.同时在"最后一页"链接里单击方法调用一个函数自动去修改页数为最后一页,然后再调用载入评论的方法. 可是我发现点击"最后一页"第一次的时候系统没反应,再点击一次就抓去最后一页的资料了! 要说全局变量没改,应该是改了,就仿佛改了页数而载入评论的方法失效了一样. 代码如下: 复制代码 代码如下: var page = 1; //初始化页数为第一页 var str = ""; $(document).ready(funct

JavaScript 变量命名规则

JScript 是一种区分大小写的语言. 第一个字符必须是一个 ASCII 字母(大小写均可),或一个下划线(_).注意第一个字符不能是数字. 后续的字符必须是字母.数字或下划线. 变量名称一定不能是 保留字. 下面给出合法变量名称的一些示例: _pagecount Part9 Number_Items 下面给出无效变量名称的一些示例: 99Balloons // 不能以数字开头.Smith&Wesson // "与"符号(&)字符用于变量名称是无效的.

JavaScript中的函数的两种定义方式和函数变量赋值

复制代码 代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript"> /*I总结: 1.函数名可以做变量使用,可以赋值,可以传值 2.函数名当参数,传递给另一个函数 */ //===========

javascript 调用其他页面的js函数或变量的脚本

调用函数.变量的方法一样,都是需要首先获得你需要调用的函数所在的window对象,然后通过window.method()或者 window.variable 来调用.  下面的示例演示了一个弹出窗口如何调用起父窗口中的方法和变量.  父窗口:1.html 我们 www.jb51.net 其它页面js变量调用方法代码 var theHelloStr = "Hello all."; function sayHello() { alert("hello, method")

pyv8学习python和javascript变量进行交互

python取得javascript里面的值 复制代码 代码如下: import PyV8 with PyV8.JSContext() as env1:    env1.eval("""                var_i = 1;                var_f = 1.0;                var_s = "test";                var_b = true;            ""

JavaScript传递变量: 值传递?引用传递?

当变量A赋值给变量B时,会将栈中的值复制一份到为新变量分配的空间中. 如何理解? 复制代码 代码如下: var x = y = 1; y = 2; alert(x); x的值为多少? 复制代码 代码如下: var obj = {}; var sub = {}; sub['id'] = 3; obj['sub'] = sub; sub['id'] = 4; alert(obj['sub']['id']); obj['sub']['id']的值又为多少?他们真的符合你的预期吗? 我们分别运行2段代码

Javascript基础教程之变量

javascript 中变量通过var关键字(variable)来声明的. 复制代码 代码如下: var school = "beijingyizhong" 也可以通过var 关键字给变量多个值. 复制代码 代码如下: var school = "beijingyizhong" , diqu = "beijing" , age = 100; 此外,与java不同,javascript可以在同一个变量中存储不同的数据类型.例如 复制代码 代码如下:

JavaScript闭包函数访问外部变量的方法

闭包是指有权访问另一个函数作用域中的变量的函数,但作用域的配置机制有一个需要注意的地方,即闭包只能取得包含函数中任何变量的最后一个值. 如以下案例: function create(){     var arr = new Array();        for (var i=0; i<10; i++){         arr[i] = function(){             return i;         };      }       return arr; }   var c

PHP闭包函数传参及使用外部变量的方法

本文实例讲述了PHP闭包函数传参及使用外部变量的方法.分享给大家供大家参考,具体如下: 在Laravel控制器写两个方法,一个是在内部创建一个闭包函数,一个是执行传过来的闭包函数,测试闭包的写法,use使用外部变量,及闭包函数的传参.如下: //测试闭包传参及use使用外部变量 public function testClosure($t1, $t2) { $closure = function ($param1, $param2) use ($t1, $t2) { echo $param1.$

python 函数内部修改外部变量的方法

如果内部修改外部变量需要nonlocal,global def f1(): print("in f1..") num=111 def f2(): nonlocal num num=222 print(num) f2() print(num) f1() 以上这篇python 函数内部修改外部变量的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

JavaScript定义函数的三种实现方法

JavaScript定义函数的三种实现方法 [1]正常方法 function print(msg){ document.write(msg); } 对函数进行调用的几种方式: 函数名(传递给函数的参数1,传递给函数的参数2,-.) 变量 = 函数名(传递给函数的参数1,传递给函数的参数2,-.) 对于有返回值的函数调用,也可以在程序中直接使用返回的结果,例如:alert("sum=" + square(2,3)); 不指定任何函数值的函数,返回undefined. [2]构造函数方法 

Android4.4新增函数访问外部存储

在Android 4.4系统中,外置存储卡(SD卡)被称为二级外部存储设备(secondary storage),应用程序已无法往外置存储卡(SD卡)写入数据,并且WRITE_EXTERNAL_STORAGE只为设备上的主要外部存储(primary storage)授予写权限,对于其他外部存储,其上的文件属性都改为基于文件夹结构,应用无需获取WRITE_EXTERNAL_STORAGE权限,但可以管理与自己包名相关的文件夹. 举例来说,如果应用的包名是com.example.externalst

python访问系统环境变量的方法

本文实例讲述了python访问系统环境变量的方法.分享给大家供大家参考.具体如下: #-------------------------------- # Name: enviroment_variables.py # Author: Kevin Harris # Last Modified: 02/13/04 # Description: This Python script demonstrates # how to acces enviroment variables. #--------

javascript中函数作为参数调用的方法

本文实例讲述了javascript中函数作为参数调用的方法.分享给大家供大家参考.具体分析如下: 先来看示例: function Map(){ var obj = {}; this.put = function(key, value){ obj[key] = value; } this.eachMap = function(fn){ for(var attr in obj){ fn(attr, obj[attr]); } } } var m = new Map(); m.put('01', 'a

轻松学习Javascript闭包函数

闭包函数是什么?在开始学习的闭包的时候,大家很能都比较难理解.就从他的官方解释来说,都是比较概念化的. 不过我们也还是从闭包的含义出发. 闭包是指函数有自由独立的变量.换句话说,定义在闭包中的函数可以"记忆"它创建时候的环境. 官方解释说完后,我们先来看一个简单计数的例子. var c = 0; function count(){ c++; } count();// 1 count();// 2 这个例子是利用了全局变量来实现,但是这里有个问题是,c这个变量也容易被其他方式所调用,这时

使用VBS访问外部文本文件一些方法和脚本实例代码

处理文件用到的常量有:ForReading = 1 ,ForWriting=2,ForAppending=8,用于的操作分别是读/写和追加,都要在使用之前用VBS Const来声明.常用于处理文本文件的方法有:Read(var)-读var个字符,ReadLine-读一行,ReadAll-读整个文件内容,SkipLine-跳过本行指向下一行,Write(var)-把字符串var写入文件,WriteLine(var)-把字符串var和换行符写入文件,WriteBlankLines(n)-写入n个换行

C#实现在匿名方法中捕获外部变量的方法

先来一段代码引入主题.如果你可以直接说出代码的输出结果,说明本文不适合你.(代码引自<深入理解C#>第三版) class Program { private delegate void TestDelegate(); static void Main(string[] args) { TestDelegate[] delegates = new TestDelegate[2]; int outside = 0; for(int i = 0; i < 2; i++) { int insid