java - 如果渲染保存json成功,如何刷新页面true

标签 java jquery grails groovy

在 Controller 中

if (!surveyMasterAnswerDetailInstance.save(flush: true)) {
    render([success: false, messages: surveyMasterAnswerDetailInstance.errors] as JSON)
    return
}    
    render([success: true] as JSON)
}

//在视野中
$(document).on('submit', '#creationOptionsForm', function(e){
  e.preventDefault();

  var form_data = new FormData($('#creationOptionsForm')[0]);

  var formURL = $(this).attr("action");
  $.ajax(
    {
        url : formURL,
        processData: false,
        contentType: false,
        async: false,
        cache: false,
        type: "POST",
        data : form_data,
       success: function(data){
           if(data.success == true){ // if true (1)
               setTimeout(function(){// wait for 5 secs(2)
               location.reload(); // then reload the page.(3)
              }, 5000); 
           }
        }
        ,
        error: function(jqXHR, textStatus, errorThrown)
        {
            //if fails     
        }
    });

   return true
});

最佳答案

完整的工作示例如下:

index.gsp

<!DOCTYPE html>
<html>
<head>
    <meta name="layout" content="main">
    <script type="text/javascript">
            $(document).on('submit', function(e){
              e.preventDefault();

              $.ajax(
                {
                    url : "${g.createLink(controller:'testStuff', action:'jsonUrl')}",
                    processData: false,
                    contentType: false,
                    async: false,
                    cache: false,
                    type: "POST",
                    data : $('#creationOptionsForm').serialize(),
                    success: function(data, status, jqxhr) {
                        if ( jqxhr.responseJSON.success === true ){
                            setTimeout(function(){
                                location.reload();
                            }, 5000);
                        }
                    }
                    ,
                    error: function(jqXHR, textStatus, errorThrown)
                    {
                        alert( 'Failed' );
                    }
                });
            });
    </script>
</head>
<body>
<div>
    <g:form id="creationOptionsForm">
        <g:textField name="thename" value="${params.thename}" />
        <g:submitButton name="submit" value="submit" />
    </g:form>
</div>
</body>
</html>

TestStuffController
import grails.converters.JSON

class TestStuffController {

    def index() {
        println 'index'

    }

    def jsonUrl() {
        if (!true) {
            render([success: false, messages: 'bad stuff'] as JSON)
            return
        }
        render([success: true] as JSON)
    }
}

显然,以上条件是荒谬的,但所有内容均在此处提供示例。

关于java - 如果渲染保存json成功,如何刷新页面true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50110603/

相关文章:

jquery - 从 google chrome 扩展到 Laravel 5.5 应用程序的 Ajax 发布请求

java - Android:使用微调器更改主要 Activity 背景颜色

javascript - 如何以这种方式在 javascript/jquery 中动态创建 div

java - Web 服务器上的 Zip 文件以解压到本地计算机

jquery - Jcrop默认选择框

java - 是否可以覆盖 Grails 域类中的列表访问器?

Grails:通过服务中的数据绑定(bind)完成的回滚关联

jquery - Grails Ajax URL createLink 不起作用

java - 如何从帮助菜单按钮打开 html 文件

java - 正则表达式还是异常处理?