js调用jsp的问题

JavaScript022

js调用jsp的问题,第1张

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

}

}

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页面了,那么就可以直接调用了。