我使用jQuery Ajax调用Struts2操作,如下所示:
$.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;
}
我想result
从Struts动作中的jQuery函数中检索。我如何才能做到这一点?
您可以使用stream
result从操作中仅获取字符串。
将您的操作配置为使用stream
结果contentType
设置为text/plain
(或根本不使用contentType
,因为text/plain
默认情况下已设置)。
<action name="callAction" method="call">
<result type="stream">
<param name="contentType">text/plain</param>
</result>
</action>
在您的操作InputStream
中,使用getter / setter创建字段,并在您的操作方法中,将String转换为输入流。
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-S并没有这样dataType
的string
,使用text
或根本不设置(jQuery将尝试基于MIME类型的响应来推断的话)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句