Java 表单提交期间调用ajax后没有显示成功页面
我正在使用struts2,我有一个表单,我想获取JSON数组中的所有值 为了获得这个JSON数组,我制作了一个JavaScript片段,将表单转换为JSON格式,并在提交事件期间将其发送到Struts操作:Java 表单提交期间调用ajax后没有显示成功页面,java,jquery,ajax,json,struts2,Java,Jquery,Ajax,Json,Struts2,我正在使用struts2,我有一个表单,我想获取JSON数组中的所有值 为了获得这个JSON数组,我制作了一个JavaScript片段,将表单转换为JSON格式,并在提交事件期间将其发送到Struts操作: <script type="text/javascript"> jQuery("#advanced-search").submit(function(e){ var formInput=jQuery(this).serializeJSON(
<script type="text/javascript">
jQuery("#advanced-search").submit(function(e){
var formInput=jQuery(this).serializeJSON({parseBooleans: true,parseNulls: true});
jQuery.ajax({
type: "POST",
url: "<s:url action='searchJSON'/>",
data: "jsonForm="+JSON.stringify(formInput),
dataType: "json"
});
});
</script>
问题就在这里。。。我的表单被提交,我的操作被一个好的JSON数组调用,但是成功的结果并没有显示jsp。。在浏览器中,页面仍然是表单
有人知道为什么没有重定向到结果页面吗
将表单作为JSON数组提交是一种好方法吗?经过一些测试后,可以。。。通过这些评论(谢谢大家),我写了一个解决方案 我仍然使用JSON格式的ajax提交,但回调消息是要重定向的url: HTML: ajax方法接收的url如下所示:param=value;价值价值观&参数=值强> 可以根据需要对其进行格式化。url在javascript(主机等)中完成
URL中的每个参数都必须是URL调用的操作的属性。提交的不是JSON,因为它是一篇Ajax文章。一切都是边带。如果您希望在Ajax发布后发生一些事情,您需要更新JavaScript,以便在成功响应(或失败响应)后执行某些操作。是的,我知道,但我认为Struts可以重定向页面,尽管有Ajax调用,是吗?不,您甚至可以使用Ajax调用请求HTML页面,如果你这样做,页面被重定向,你会得到一个不同的页面。。。但您的函数仍在拦截该数据。因此,您需要根据在函数中接收到的数据确定要去哪里。
<form action="javascript:void(0);" id="advanced-search" method="post">
...
</form>
<action name="search" class="searchAction" method="search">
<result name="success" type="tiles">results</result>
<result name="error" type="tiles">error</result>
</action>
public String search() {
JSONObject jObj = (JSONObject) new JSONTokener(jsonForm).nextValue();
....
return SUCCESS;
}
<form action="javascript:void(0);" id="advanced-search" method="post">
...
</form>
jQuery("#advanced-search").submit(function(e){
//var formInput=jQuery(this).serializeObject();
var formInput=jQuery(this).serializeJSON({parseBooleans: true,parseNulls: true});
e.preventDefault();
jQuery.ajax({
url: "<s:url action='searchJSON'/>",
data: "jsonForm="+JSON.stringify(formInput),
contentType: "application/json",
dataType: "json"
}).done(function( msg ) {
window.location.href="<s:url action='search'/>?"+msg;
});
});
<action name="searchJSON" class="searchAction" method="searchJSON">
<result type="json">
<param name="root">urlRedirectAjax</param>
</result>
</action>
public class SearchAction extends ActionSupport {
private String urlRedirectAjax;
public String searchJSON(){
StringBuilder urlResultat = new StringBuilder();
JSONObject jObj = (JSONObject) new JSONTokener(jsonForm).nextValue();
if(jObj == null)
return ERROR;
if(jObj.has("elementJSON")){
JSONObject jsObjMot = (JSONObject) jObj.get("elementJSON");
String separator = "";
for(Object key : jsObjMot.keySet()){
urlResultat.append(separator);
separator = ";";
urlResultat.append((String) key);
}
urlResultat.append("&");
}
.....
urlRedirectAjax = urlResultat.toString();
return SUCCESS;
}
public String getUrlRedirectAjax() {
return urlRedirectAjax;
}
public void setUrlRedirectAjax(String urlRedirectAjax) {
this.urlRedirectAjax = urlRedirectAjax;
}
}