我使用Struts2 Ajax调用jQuery操作,如下所示:
$.ajax ({
url: 'callAction.action',
type: 'POST',
data: data,
dataType: 'string',
success: function (data) {
console.log("Success");
}
});
作为响应,它必须将一个字符串返回到jQuery。
private String result;
//getters and setters
public String call()
{
//some code
result= "some string";
return SUCCESS;
}
我想从Struts操作中的函数检索result
到jQuery。我怎么才能让这一切成为可能?
发布于 2015-01-29 18:41:29
您可以使用stream
结果从操作中获得一个字符串。
将您的操作配置为使用stream
结果,并将contentType
设置为text/plain
(或者根本不使用contentType
,因为在默认情况下text/plain
是设置的)。
<action name="callAction" method="call">
<result type="stream">
<param name="contentType">text/plain</param>
</result>
</action>
在操作中,使用getter/setter创建InputStream
字段,并在操作方法中将字符串转换为输入流。
private InputStream inputStream;
// getter/setter
public String callAction() {
inputStream = new ByteArrayInputStream(
"some string".getBytes(StandardCharsets.UTF_8));
return SUCCESS;
}
然后,您可以像这样执行ajax请求:
$.ajax ({
url: '<s:url action="callAction"/>',
type: 'POST',
dataType: 'text',
success: function (data) {
console.log(data);
}
});
注意:最好使用<s:url>
标记来构造url,并且没有像string
这样的dataType
、使用text
或根本不设置它(jQuery将尝试根据响应的MIME类型推断它)。
https://stackoverflow.com/questions/28221528
复制相似问题