后台数据无法再JSP前台显示

OneMoreFreeMan 2017-11-09 05:14:25
当在JSP网页(device.jsp)中的select控件进行选择后,我采用ajax把所选择的值传递到后台action。后台收到该选项值后,进行处理,再把处理结果显示到原来的JSP网页(device.jsp)中。

select控件的onchange函数如下, 通过ajax把所选择的值deviceIDValue, 传递到后台EditDeviceBehavior.action了:

var newRequest;
function getDevice()
{
var deviceIDValue = document.forms[0].device.value;
newRequest = new XMLHttpRequest();
var url = "EditDeviceBehavior.do?action=Create&device=" + deviceIDValue;
newRequest.open("get", url, true);
newRequest.onreadystatechange = processResponse;
newRequest.send(null);
return;
}

在EditDeviceBehavior.action中通过request.getParameter("device");我的确也得到了url中传来的值。
我把收到的值处理后, 把结果放到request.setAttribute("result", result);中,但是该结果在下面的javascript中显示不出来。

function processResponse()
{
if(newRequest.readyState == 4 && newRequest.status == 200)
{
<%
String myResult = (String)request.getAttribute("result"); // Statement A
if (myResult != null)
{

%>
alert(<%=myResult %>); // Statement B, 不执行
<%
System.out.println(myResult ); // Statement C, 执行
}
%>
}
return;
}

结果alert(<%=myResult %>); // Statement B, 就是不执行,无法把后台的数据传递到前端的JSP中。但是后面的System.out.println(myResult ); // Statement C,却能成功执行。

另外,如果把String myResult = (String)request.getAttribute("result"); // Statement A 改成了String myResult = "1234";则后面的Statement B和Statement C都能成功的执行。

各位大神帮忙看看这个问题,它困扰我好几天了。非常感谢了!!!
...全文
537 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2017-11-10
  • 打赏
  • 举报
回复
引用 3 楼 OneMoreFreeMan 的回复:
感谢net_lover的回复,原因是JSP表达式<%=%>需要被引号包括起来"<%=%>"。 但我还有一点不明白,为什么myResult的赋值不同,同样的语句效果是不同的。希望能得到解答。 String myResult = (String)request.getAttribute("result"); alert(<%=myResult %>); 是不能运行的。 String myResult = "1234"; alert(<%=myResult %>); 是能运行的。
认真看1#的说明, 编译后客户端的js代码:alert(Statement A) 这种js代码是错误的
OneMoreFreeMan 2017-11-10
  • 打赏
  • 举报
回复
感谢net_lover的回复,原因是JSP表达式<%=%>需要被引号包括起来"<%=%>"。 但我还有一点不明白,为什么myResult的赋值不同,同样的语句效果是不同的。希望能得到解答。 String myResult = (String)request.getAttribute("result"); alert(<%=myResult %>); 是不能运行的。 String myResult = "1234"; alert(<%=myResult %>); 是能运行的。
Go 旅城通票 2017-11-10
  • 打赏
  • 举报
回复
引号括起作为字符串,要不非数字或者布尔变量要出错了,

Web开发学习资料推荐
jquery全年日期选择器日历插件
孟子E章 2017-11-09
  • 打赏
  • 举报
回复
alert(<%=myResult %>); / 要这样写 alert(“<%=myResult %>”); alert(Statement A) 是错误的js语法 alert(1234) 是正确的js语法

52,797

社区成员

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

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