动作类和动作类中的以下ajax方法触发方法失败(带有所有stacktrace的空指针异常);但是我的ajax总能成功:功能。请让我知道为什么会这样。我的ajax电话应该改变什么?我需要提交;我只是试图从行动中获取信息并获取成功。 + 下面的ajax调用IE中的Click not firing action class。在Firefox中运行良好。
这是行动类中的方法。
public String pullData() {
try {
logger.debug("Pulling Data..!");
data.getInformation(); -> //throws null pointer exeption.
return SUCCESS;
} catch (Exception e) {
this.LOG.warn("Error while trying to execute quartz job: " + e);
e.printStackTrace();
return ERROR;
}
}
JSP
<input id="pullDataButton" class="button" type="button" value="Pull" />
ajax方法
$("#pullDataButton").click(function() {
$.ajax( {
traditional: true,
type: "POST",
url: "PullData.action",
async: true,
success: function(response) {
$('#placeHolder').html('Data Pulled!').css({color:'green'});
},
error: function(e) {
$('#placeHolder').html('Data Pull Failed!').css({color:'red'});
}
});
});
struts.xml中
<action name="pullData" method="pullData" class="com.pay.code.PullDataAction">
<result name="input">mainInfo.jsp</result>
<result name="error">mainInfo.jsp</result>
<result name="success">mainInfo.jsp</result>
</action>
答案 0 :(得分:0)
除非您返回错误代码,否则JavaScript代码无法知道发生了什么错误 - 您正在返回正常的请求结果。 JS 主要捕获来自S2的实际响应,您可以通过使用Firebug或其他浏览器开发工具查看响应来证明。
我不记得当前的调度程序结果是否允许设置HTTP响应代码 - 如果是,则将其设置为错误。如果没有(我不相信它),你可以破解现有的结果类型以允许设置代码 - 如果你特别需要HTTP错误响应(或其他)代码,那就是我所做的。
另一种选择是返回JSON并使用JSON的内容来确定错误状态和新的DOM内容,并在客户端做更多的工作。
另一种选择是将信息放在您要发回的JSP中,例如,使用action属性来确定一些HTML内容 - 所以不要在JS端执行,而是在JSP中执行。或者一共返回不同的JSP,可能嵌入/包含不变的“常量”部分。
最佳选择取决于您的技能和要求。