我正在尝试使用Ajax请求从Action中获取价值,但是我在使用javascript中的struts标签来显示值时遇到了问题。
Javascript代码:
dojo.xhrPost({
url: "dashboard"
,content: myParameterscomp
, handle: function(response, ioargs) {
if (ioargs.xhr.status == 200)
{
var data = "<s:property value='#request.consumptionData'/>"
console.log(data);
}
}
,error: function (data) {
handleError(data.description);
}
});
Java代码:
Map request = (Map)context.get("request");
request.put("consumptionData", 43);
我在控制台上获得的数据值为<s:property value='#request.consumptionData'/>
,而不是 43 。我正在使用struts2。我的javascript代码在JSP文件中。有谁能告诉我如何才能显示价值?
答案 0 :(得分:1)
您似乎是通过主页上的Ajax调用/ dashboard页面。并期望它向您发送请求属性consumptionData。这不起作用,因为您的JSP不包含所需的数据。您需要将数据放入JSP中,然后在Ajax中获取相同的内容。将您的响应转换为JSON。最简单的方法是在Ajax响应JSP中添加类似代码。
Dashboard.jsp
{"consumptionData": < "<s:property value='#request.consumptionData'/>"}
在主页面中,当您通过ajax加载此JSP时,您可以解析此JSON输出并使用Javascript中的数据。
var json = JSON.parse(response);
var data = eval(json.consumptionData);
答案 1 :(得分:0)
浏览器中的代码接受JSON。您可以将请求序列化为JSON并嵌入JavaScript文件中。例如:
var data = <%= toJson(request.get("consumptionData")) %>
如果数据是简单的Integer
值,您甚至可以直接将值放在代码中:
var data = <%= request.get("consumptionData") %>
语法可能有所不同(我不熟悉struts标签),但想法是一样的。