繁体   English   中英

Grails函数执行顺序

[英]Grails order of function execution

我有一个formRemote ,当它像这样提交时,它将在控制器中调用一个函数:

<g:formRemote name="editIndivRecForm" url="[controller: 'customer', action:'saveEditedIndividualRecord']" onSuccess="doResult();">

通过单击按钮提交此表单。 而是,单击一个名为'save'的按钮将执行其他操作,其中包括通过Javascript单击表单的提交按钮。 这是此按钮的点击处理程序:

$('#save').click(function () {
            $("#uniqueId").prop('disabled', false); // Have to enable before form submission else it doesn't go back as a param to controller.
            $("#secondaryId").prop('disabled', false);
            $("#submit").trigger("click"); // formRemote's submit button
            $('#editIndivRecForm').reset;
            <g:remoteFunction controller="customer" 
                                        action="remediationSearch" 
                                        update="content_area" 
                                        params="{rerender: true}"/>
        });

我遇到的问题是,我需要我的控制器通过单击处理调用的函数remediationSearch由formRemote提交的材料称为控制器的功能后运行saveEditedIndividualRecord执行完毕。 但这正相反。 出于某种原因,函数onSuccess="doResult();" 甚至不执行,否则我将以下代码移入其主体以使事情按我想要的方式工作:

<g:remoteFunction controller="customer" 
                                            action="remediationSearch" 
                                            update="content_area" 
                                            params="{rerender: true}"/>

这是doResult现在的doResult

function doResult() {
            console.log("done.");
        }

提交了doResult但是doResult函数不会向控制台输出任何内容。

鉴于所有与Grails AJAX相关的标签都已被弃用 ,我建议您尝试这种方式:

标记:

<form id="editIndivRecForm" onsubmit="return false;">
  <!-- add fields here -->
  <input type="text" id="uniqueId" value="${something}">
  <input type="text" id="secondaryId" value="${something}">
  <button id="save" type="button">
</form>

JavaScript的:

// Function to update your content_area div
function updateContentArea() {
    var params = { rerender: true };
    var url = "${createLink(controller: 'customer', action: 'remediationSearch')}";
    $.get(url, params, function(data) { 
        $("#content_area").empty().append(data); 
    });
}

$("#save").on('click', function() {
    // Collect values from form and submit ajax request
    // Using name and description for example fields here:
    var data = {
        name: $("#name").val(),
        description: $("#description").val(),
        uniqueId: $("#uniqueId").val(),
        secondaryId: $("#secondaryId").val()
    };
    var url = "${createLink(controller: 'customer', action: 'saveEditedIndividualRecord')}";

    // Submit the (first) AJAX request
    $.ajax({
        type: "post",
        url: url,
        data: data,
        success: function() {
            doResult();
            $('#editIndivRecForm').reset();
            updateContentArea();
        }
    });
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM