【发布时间】:2012-02-14 17:42:59
【问题描述】:
我正在尝试使用 struts2 在 jsp(避免表单提交)中实现 ajax。我使用 ajax 代码通过 url 将请求传递给 struts2 操作。但是来自 struts2 的响应并没有在日本得到填充。它显示“空”值。我使用 AJAX 在 jsp 中调用动作的代码如下。
function ajaxEditFunctionCall(){
var xmlHttp;
var url = "ajaxcall.action?stateName="+frm.stateName.value;
try{
xmlHttp=new XMLHttpRequest();
}catch (e){
try{
xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch (e){
try{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
alert("Your browser does not support AJAX!");
return false;
}
}
}
alert(1);
xmlHttp.onreadystatechange = showMessage;
alert(2);
xmlHttp.open("GET", URL, true);
alert(3);
xmlHttp.send(null);
}
function showMessage() {
alert("Inside Show Message1");
alert(xmlhttp.readyState);
if(xmlhttp.readyState==4)
{
alert("Inside Show Message2&ReadyState4");
alert(xmlhttp.responseText);
}
}
Included following code in Action Class:
public String ajaxcall() throws Exception{
System.out.println("Inside AjaxCall");
String errorXml = "This is a Sample to Check";
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-cache");
response.setContentType("text/html");
response.getWriter().write(errorXml);
return null;
}
Struts.xml 中包含的代码:
<action name="ajaxcall" class="com.logic.action.CustomerAction" method="ajaxcall">
<result name="success" >/pages/customer/addCustomer.jsp</result>
</action>
我认为错误出现在 action class-response 语句和 struts.xml 中。任何人都可以帮我解决这个问题。提前致谢。
【问题讨论】:
-
既然有这么多更好的 JS 选项,为什么还要使用“原始”JavaScript?无论如何,使用 Firebug/Chrome 开发工具等很容易检查响应中返回的内容,如果响应有效,那么它就在您的 JS 中。
-
我相信一个简单的调试器将帮助您查明问题。如果您提交表单,它是否工作正常?
-
@Umesh 当我单击提交按钮时,它会调用 javascript 并控制转到指定的操作类并在日志文件中打印静态消息。但是响应没有出现在 jsp
中。我在动作课上用的是对还是错? -
@Dave Newton:我不知道其他 Javascript 可以使用 ajax。它在 Struts1 中运行良好,所以我曾经在 struts2 中尝试过。如果还有其他方法可以做到这一点,请帮助我。
-
@shiva:你的方法中的这个响应是什么。我相信你可以使用流结果来发送数据,或者如果你想从你的动作类发送一大块 HTML,只需发回模板本身.