情况如下
在我的JSP页面中,我正在调用一个动作类方法
<input type="text" class="inputstyle" name="feedName" id="feedName" placeholder="<s:text name="global.feed_name" />" required>
这是我的Ajax JQuery
$(document).ready(function() {
$('#feedName').blur(function() {
var feedName=$("#feedName").val();
if(feedName!="")
{
$.ajax( {
traditional: true,
type: "POST",
url: "feedCheck",
data:"feedName="+feedName,
dataType: "text",
success: function(response) {
alert("AVAILABLE!");
},
error: function(data) {
alert("NOT AVAILABLE!!!");
}
});
}
});
});
struts.xml中
<action name="feedCheck" method="feedCheck" class="com.analytic.webapp.action.AAIDCAIndexAction">
<result name="success">DCAAnalytix.jsp</result>
<result name="error">DCAAnalytix.jsp</result>
</action>
动作类方法
public String feedCheck()
{
MClient client = (MClient) getRequest().getSession().getAttribute(
AAI_CLIENT);
List<String> feedNamesFromDB=mFeedManager.getAllFeedNameByClient(client.getClientKey());
System.out.println(feedName);
if(feedNamesFromDB.size()>0){
if(feedNamesFromDB.contains(feedName)){
return ERROR;
}
}
return SUCCESS;
}
ajax调用正常工作并调用action类方法并执行。但问题是,结果总是在Ajax中出错。也就是说,如果该方法返回 SUCCESS ,那么网页也会警告“不可用!!!”
我是Ajax的新手。当我搜索时,大多数帖子都是关于返回JSON数据。我不想要JSON数据。我只需要结果状态以及如何在Ajax中获取它?
答案 0 :(得分:2)
struts2中ajax的结果类型应该是一个流。在代码中尝试使用它。
<action name="feedCheck" method="feedCheck" class="com.analytic.webapp.action.AAIDCAIndexAction">
<result type="stream">
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param>
</result>
</action>
在你的动作课上。 您应该使用getter和setter
创建类变量private InputStream inputStream;
然后在你的方法中
public String feedCheck()
{
MClient client = (MClient) getRequest().getSession().getAttribute(
AAI_CLIENT);
List<String> feedNamesFromDB=mFeedManager.getAllFeedNameByClient(client.getClientKey());
System.out.println(feedName);
if(feedNamesFromDB.size()>0)
{
if(feedNamesFromDB.contains(feedName))
{
this.setInputStream(new ByteArrayInputStream(ERROR.getBytes()));
}
else
{
this.setInputStream(new ByteArrayInputStream(SUCCESS.getBytes()));
}
}
else
{
this.setInputStream(new ByteArrayInputStream(SUCCESS.getBytes()));
}
return SUCCESS;
}
希望这会奏效。
并在您的视图页面
$(document).ready(function() {
$('#feedName').blur(function() {
var feedName=$("#feedName").val();
if(feedName!="")
{
$.ajax( {
traditional: true,
type: "POST",
url: "feedCheck",
data:"feedName="+feedName,
dataType: "text",
success: function(data, success) {
if(data.indexOf("success")==-1){
alert("Action returned Error")
}else{
alert("Action returned Success")
}
}
});
}
});
});
流数据将返回String“error”或“success”。它将在视图页面中的ajax成功方法中提供。