jQuery Ajax
dataType : 'json'使用A
来指定在执行 *** 作和结果时从回调函数返回的数据类型,以及从服务器返回的响应。
success
dataType(默认值:智能猜测(xml,json,script,或html))类型:
String您期望从服务器返回的数据类型。如果未指定,则jQuery将尝试根据响应的MIME类型来推断它(XML
MIME类型将产生XML,在1.4中,JSON将产生Javascript对象,在1.4中,脚本将执行该脚本,而其他任何内容将是以字符串形式返回)。
该URL应该正确指向动作映射。假定它将在默认名称空间中,否则您应该修改URL和映射以添加
namespace属性。
<script type="text/javascript"> $(function() { $("#dialog-form").dialog ({ autoOpen: true, height: 500, width: 750, modal: true, buttons : { "Search" : function() { $.ajax({ url : '<s:url action="part" />', success : function(data) { //var obj = $.parseJSON(data); var obj = data; alert(JSON.stringify(obj)); } }); } } }); });</script>
json如果您
JSONObject手动构建,则不需要返回结果类型。您可以返回文本作为流结果,然后根据需要将字符串转换为JSON。
struts.xml
:
<package name="default" extends="struts-default"> <action name="part" method="finder"> <result type="stream"> <param name="contentType">text/html</param> <param name="inputName">stream</param> </result> </action></package>
行动:
public class PartAction extends ActionSupport { public class SearchResult { private String col1; private String col2; public String getCol1() { return col1; } public void setCol1(String col1) { this.col1 = col1; } public String getCol2() { return col2; } public void setCol2(String col2) { this.col2 = col2; } public SearchResult(String col1, String col2) { this.col1 = col1; this.col2 = col2; } } private InputStream stream; //getter here public InputStream getStream() { return stream; } private List<SearchResult> findList = new ArrayList<>(); public List<SearchResult> getFindList() { return findList; } public void setFindList(List<SearchResult> findList) { this.findList = findList; } private String list() { JSonObject jo = new JSonObject(); try { for (SearchResult part : findList) { jo.put("col1", part.getCol1()); jo.put("col2", part.getCol2()); } System.out.println("--------->:"+jo.toString()); } catch (Exception e) { e.printStackTrace(); System.out.println(e.getMessage()); } return jo.toString(); } @Action(value="part", results = { @Result(name="stream", type="stream", params = {"contentType", "text/html", "inputName", "stream"}), @Result(name="stream2", type="stream", params = {"contentType", "application/json", "inputName", "stream"}), @Result(name="json", type="json", params={"root", "findList"}) }) public String finder() { findList.add(new SearchResult("val1", "val2")); stream = new ByteArrayInputStream(list().getBytes()); return "stream2"; }}
我对结果类型和内容类型放置了不同的结果,以更好地描述这个想法。您可以返回这些结果中的任何一个,并返回是否为字符串化的JSON对象。字符串化版本需要解析返回的数据以获得JSON对象。您还可以选择哪种序列类型更好地进行序列化以满足您的需要,但是我的目标是表明,如果需要序列化简单对象,则不需要json插件来使其工作。
参考文献:
我们如何返回文本字符串作为响应
如何转换
JSONObject
为字符串
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)