Java 表单提交期间调用ajax后没有显示成功页面

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(

我正在使用struts2,我有一个表单,我想获取JSON数组中的所有值

为了获得这个JSON数组,我制作了一个JavaScript片段,将表单转换为JSON格式,并在提交事件期间将其发送到Struts操作:

<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;
 }
}