一个jsp页面中,写了一段js代码,想直接调用另一个Java类中的一个方法,有代码如下:
<%@ page contentType="text/html;charset=GBK" pageEncoding="GBK" language="java"%>
<%@page import="com.lowagie.text.Document"%>
<%@ taglib uri="/zhongwaytag" prefix="zw"%>
<%@ page import="com.zhongway.db.CallProcLocalizationSch_Ora"%>
……
……
<script type="text/javascript">
function location(nodeName){
if(nodeName.value == null || nodeName.value.trim()==""){
alert("请输入有效站点名称!");
}
var locId =<%= CallProcLocalizationSch_Ora.locationNode(nodeName, request) %>
}
</script>
问题1:这样是否可以调用得到CallProcLocalizationSch_Ora类中的locationNode()方法;
问题2:这段代码中,var locId =<%= CallProcLocalizationSch_Ora.locationNode(nodeName, request) %>的nodeName参数报“nodeName cannot be resolved”错误。请教高人帮忙看看,怎么回事??
<%@ page contentType="text/html;charset=GBK" pageEncoding="GBK" language="java"%>
<%@page import="com.lowagie.text.Document"%>
<%@ taglib uri="/zhongwaytag" prefix="zw"%>
<%@ page import="com.zhongway.db.CallProcLocalizationSch_Ora"%>
……
……
<script type="text/javascript">
function location(nodeName){
if(nodeName.value == null || nodeName.value.trim()==""){
alert("请输入有效站点名称!");
}
var locId =<%= CallProcLocalizationSch_Ora.locationNode(nodeName, request) %>
}
</script>
问题1:这样是否可以调用得到CallProcLocalizationSch_Ora类中的locationNode()方法;
问题2:这段代码中,var locId =<%= CallProcLocalizationSch_Ora.locationNode(nodeName, request) %>的nodeName参数报“nodeName cannot be resolved”错误。请教高人帮忙看看,怎么回事??
js是不可以访问服务器端程序的,所以谈不上js调用locationNode()方法;jsp页面中的java代码块是在服务器端执行的,所以这么写locationNode()方法可以执行,执行后把返回值赋给js变量locId 问题2:
nodeName这个是js声明的变量,你把他做参数放到java代码块里不报错才怪;
最根本的原因还是js不能访问后台程序;如果你想访问后台程序用ajax
可以调用,记住客户端得js是无法阻止服务器端得代码执行的。
var locId = "<%= CallProcLocalizationSch_Ora.locationNode(nodeName, request) %> ";
问题2:这段代码中,var locId = <%= CallProcLocalizationSch_Ora.locationNode(nodeName, request) %>的nodeName参数报“nodeName cannot be resolved”错误。这个错误也可以说明是可以调用的否则不是报这种错误,你的参数要有""号.
试试吧
2.可以使用一楼推荐的DWR来实现。
楼主要分清楚B/S开发中的,B和S,有的代码是在server上执行的,有的代码是在browser上执行的。
不能混在一起的。
var locId =<%= CallProcLocalizationSch_Ora.locationNode('nodeName', request) %>;
应该这样使用吗?、
nodeName是js变量 不能放到java代码块里 而且js调用java的方法这说法本身就错误
<%@ page contentType="text/html;charset=GBK" pageEncoding="GBK" language="java"%>
<%@page import="com.lowagie.text.Document"%>
<%@ taglib uri="/zhongwaytag" prefix="zw"%>
<%@ page import="com.zhongway.db.CallProcLocalizationSch_Ora"%>
……
……
<script type="text/javascript">
function getRequestPageValue(requestpage,urlParam,getMode) {
var URLParam = urlParam;
var xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
xmlObj.open(getMode,requestpage + URLParam,false);
xmlObj.setrequestheader("content-length",URLParam.length);
xmlObj.setrequestheader("content-type","application/x-www-form-urlencoded");
xmlObj.send(URLParam);
var res = xmlObj.responseText;
var returnStr = Trim(res.toString());
return returnStr;
};
function location(nodeName){
if(nodeName.value == null || nodeName.value.trim()==""){
alert("请输入有效站点名称!");
}else{
var requestpage = "b.jsp" ;
var URLParam = "?nodeName=" + nodeName ;
var locId = getRequestPageValue(requestpage,URLParam,'POST') ;
}
}
</script>
调用页面
b.jsp
<%
String nodeName = request.getParameter("nodeName") ;
com.zhongway.db.CallProcLocalizationSch_Ora.locationNode(nodeName, request) ;
out.print(nodeName) ;
%>
//用jqueryvar _locId = locId;
$(document).ready(function(){
$.post("path",{"param":"nodeName"},function(data){
_locId = data; }
});
});
jsName.path(参数值,function(data){
...........处理返回值
});
dwr是js和java娄交互的非常好的框架,非常好用.
function locate(action, nodename) { var url = action; var pars = "nodename=" + nodename;
var myAjax = new Ajax.Request(url, {method:"post", parameters:pars, onComplete:showResponse});
}
function showResponse(originalRequest) { var myobj = originalRequest.responseText.evalJSON(true); if(myobj.length == 0){
alert("没有找到匹配结果!!");
}else{
var ttt = myobj[0];
var select = eval(ttt.nodeid);
}
return select;
}