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
}
}
你好,
通常来说是可以的。我给你列举两种方法,你根据你的情况选择适合你的吧。
方法一:将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)
}
})
大致就这么多,希望能解决你的疑惑,如有疑问可追问~
ExtJS 中JS页面是不可以跨jsp页面去调用jsp页面的js方法的。需要把js函数写到extjs才可以调用。DJSLoader=function(){
this.init=function(opt){}
this.JS=new Array()
this.loadJS=function(file,path){
path=path?path:''
var script=document.getElementsByTagName("script")
var i,j
for (i=0,j=script.lengthi<ji++){
if (script[i].getAttribute("src") == (path+file)){
return
}
}
var _script=document.createElement("script")
_script.type="text/javascript"
_script.src="test.js"
var st=new Object()
st.file=file
st.path=path
st.loaded=false
this.JS.push(st)
_script.onload=function(obj){
obj.setJSStatus(file,true,path)
}.createDelegate(_script,[this])
_script.onreadystatechange=function(obj){
if ( this.readyState=='loaded' || this.readyState=='complete' ) {
obj.setJSStatus(file,true,path)
}
}.createDelegate(_script,[this])
document.getElementsByTagName("head")[0].appendChild(_script)
}
以上方法调用完成后,要调用的js文件已经加载到当前extjs页面了,那么就可以直接调用了。