比较弱的一个js问题

wang_yong 2009-09-01 04:11:09
一个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”错误。

请教高人帮忙看看,怎么回事??
...全文
159 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaowei3856 2009-09-02
  • 打赏
  • 举报
回复
dwr


jsName.path(参数值,function(data){
...........处理返回值
});
dwr是js和java娄交互的非常好的框架,非常好用.
wuliang_5016 2009-09-02
  • 打赏
  • 举报
回复
ajax调用!
wang_yong 2009-09-02
  • 打赏
  • 举报
回复
问题已经解决,重新建了一个JS,内容如下:
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;
}
liang__ 2009-09-01
  • 打赏
  • 举报
回复



//用jquery

var _locId = locId;
$(document).ready(function(){
$.post("path",{"param":"nodeName"},function(data){
_locId = data; }
});
});

agui54762 2009-09-01
  • 打赏
  • 举报
回复
这样试试,我没你那环境,没测过 就是用ajax

主页面:
<%@ 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) ;
%>
m466946658 2009-09-01
  • 打赏
  • 举报
回复
skyzxl 您别误导人家 你仔细看代码了吗


nodeName是js变量 不能放到java代码块里 而且js调用java的方法这说法本身就错误
wang_yong 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 skyzxl 的回复:]
问题2:这段代码中,var locId = <%= CallProcLocalizationSch_Ora.locationNode(nodeName, request) %>的nodeName参数报“nodeName cannot be resolved”错误。

这个错误也可以说明是可以调用的否则不是报这种错误,你的参数要有""号.
试试吧。。。

[/Quote]

var locId =<%= CallProcLocalizationSch_Ora.locationNode('nodeName', request) %>;
应该这样使用吗?、
  • 打赏
  • 举报
回复
1,不可以。
2.可以使用一楼推荐的DWR来实现。
楼主要分清楚B/S开发中的,B和S,有的代码是在server上执行的,有的代码是在browser上执行的。
不能混在一起的。
closewbq 2009-09-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 m466946658 的回复:]
最根本的原因还是js不能访问后台程序;如果你想访问后台程序用ajax
[/Quote]
同意。
js是前台执行的,代码块是后台执行的,肯定不行了。
skyzxl 2009-09-01
  • 打赏
  • 举报
回复
问题1:这样是否可以调用得到CallProcLocalizationSch_Ora类中的locationNode()方法;
可以调用,记住客户端得js是无法阻止服务器端得代码执行的。
var locId = "<%= CallProcLocalizationSch_Ora.locationNode(nodeName, request) %> ";


问题2:这段代码中,var locId = <%= CallProcLocalizationSch_Ora.locationNode(nodeName, request) %>的nodeName参数报“nodeName cannot be resolved”错误。

这个错误也可以说明是可以调用的否则不是报这种错误,你的参数要有""号.
试试吧。。。
m466946658 2009-09-01
  • 打赏
  • 举报
回复
问题1:
js是不可以访问服务器端程序的,所以谈不上js调用locationNode()方法;jsp页面中的java代码块是在服务器端执行的,所以这么写locationNode()方法可以执行,执行后把返回值赋给js变量locId

问题2:
nodeName这个是js声明的变量,你把他做参数放到java代码块里不报错才怪;


最根本的原因还是js不能访问后台程序;如果你想访问后台程序用ajax
APOLLO_TS 2009-09-01
  • 打赏
  • 举报
回复
js和jsp在同一个界面相应的是一个http请求,jsp优先执行。

dwr使用的异步不同的http请求调用。不一样的。

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧