在js中可以引用jsp中的数据吗

JavaScript014

在js中可以引用jsp中的数据吗,第1张

你好,

通常来说是可以的。我给你列举两种方法,你根据你的情况选择适合你的吧。

方法一:将jsp中的变量输出到html中的type为hidden的input中,js从input中去取值

<!-- jsp页面中的input元素 -->

<input type="hidden" value="<%=serverData%>" id="J_ServerData">

<!--

当然,挂在某一个DOM元素的属性上也是可以的

<div id="J_DataDiv" data-server-data="<%=serverData%>">页面中的任意DOM节点</div>

-->

<script>

// JS中读取jsp页面中输出到页面中的值

var inp = document.getElementById('J_ServerData')

// 如果是div

// var node = document.getElementById('J_DataDiv')

// 取值

var serverData = inp.value

// 如果是属性

// var serverData = node.getAttribute('data-server-data')

console.log(serverData)

</script>

方法二:JS可以通过AJAX与服务端通信,只需服务端封装一个JSP接口,前端即可取到服务端数据,以jQuery为例

$.ajax({

    url: 'server_addr/api.jsp',

    type: 'get',

    success: function(data) {

        // data 就是服务端(jsp)返回的数据

        console.log(data)

    }

})

大致就这么多,希望能解决你的疑惑,如有疑问可追问~

js中不能直接调用jsp,要获取数据可以通过ajax接口异步获取,然后在jsp上展示。

function validate() {

//获取表单提交的内容

var idField = document.getElementById("userName")

//访问validate.do这个servlet,同时把获取的表单内容idField加入url字符串,以便传递给validate.do

var url = "validate.do?id=" + escape(idField.value)

//创建一个XMLHttpRequest对象req

if(window.XMLHttpRequest) {

//IE7, Firefox, Opera支持

req = new XMLHttpRequest()

}else if(window.ActiveXObject) {

//IE5,IE6支持

req = new ActiveXObject("Microsoft.XMLHTTP")

}

/*

open(String method,String url, boolean )函数有3个参数

method参数指定向servlet发送请求所使用的方法,有GET,POST等

boolean值指定是否异步,true为使用,false为不使用。

我们使用异步才能体会到Ajax强大的异步功能。

*/

req.open("GET", url, true)

//onreadystatechange属性存有处理服务器响应的函数,有5个取值分别代表不同状态

req.onreadystatechange = callback

//send函数发送请求

req.send(null)

}

function callback() {

if(req.readyState == 4 &&req.status == 200) {

var check = req.responseText

show (check)

}

}

function show(str) {

if(str == "OK") {

var show = "<font color='green'>恭喜!!用户名可用!</font>"

document.getElementById("info").innerHTML = show

}

else if( str == "NO") {

var show = "<font color='red'>对不起,用户名不可用!!请重新输入!</font>"

document.getElementById("info").innerHTML = show

}

}

可以将JAVA变量在JSP头部定义成全局变量。

然后可以分别在JS和JSP里调用。

因为可以将JS和JSP理解为两个相互独立的块。这2个块里面的变量都是局部变量。 而局部变量是不共享的。

首先很基础的:JS可以直接引用JAVA变量,但JAVA不能引用JS变量。因为页面是先编译JAVA再编译JS,代码如下:

String tbname="bd_bank"

out.write("<SCRIPT language="+"'"+"JavaScript"+"'"+">var tbname="+"'"+tbname+"'"+"</SCRIPT>")

%>

//下面的javascipt可以直接调用变量tbname

<script language="javascript">

alert(tbname)

</script>

//在js文件中的javascipt一样可以直接使用变量 tbname 啊。

<script language="JavaScript" src="../comm/dbgrid.js"></script>

反正两个原则记好:

1、jsp代码中可以构造javascipt语句,当然包括定义备用的javascipt的变量

2、理论上在整个页面中,任何一个地方定义的javascript代码都可以被正确使用。javascipt代码对位置不敏感。