[英]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.