Javascript 如何通过;id";具有数组的函数的jquery元素的参数
因此,我创建了一个使用ajax jquery更新数据的函数,以便代码更短,并且可以反复使用。如下代码所示:Javascript 如何通过;id";具有数组的函数的jquery元素的参数,javascript,jquery,ajax,function,Javascript,Jquery,Ajax,Function,因此,我创建了一个使用ajax jquery更新数据的函数,以便代码更短,并且可以反复使用。如下代码所示: $.fn.myUpdateConfig = function({ formcomp: formcomp, urlcomp: urlcomp, errorcomp: errorcomp, editcomp: editcomp, id: id, beforeajaxcallb: beforeAjaxCallb = null, successcallb: succes
$.fn.myUpdateConfig = function({
formcomp: formcomp,
urlcomp: urlcomp,
errorcomp: errorcomp,
editcomp: editcomp,
id: id,
beforeajaxcallb: beforeAjaxCallb = null,
successcallb: successCallb = null,
errorcallb: errorCallb = null,
completecallb: completeCallb = null,
}) {
let element = $(this);
element.click(function(e) {
e.preventDefault();
let formdata = new FormData(formcomp[0]);
formdata.append('_method', 'PUT');
formValidation('hide', '', [errorcomp, editcomp]);
element.addClass('btn-progress');
loader.show();
console.log(id)); //parameter "id" returns an empty value
if (beforeAjaxCallb instanceof Function) beforeAjaxCallb();
$.ajax({
url: urlcomp + id,
data: formdata,
method: 'POST',
dataType: 'json',
processData: false,
contentType: false,
success: function(data) {
formValidation('hide', '', [errorcomp, editcomp]);
succSwallTimer(data.message);
if (successCallb instanceof Function) successCallb();
},
error: function(data) {
errorMessage(data, errorcomp, editcomp);
if (errorCallb instanceof Function) errorCallb();
},
complete: function() {
element.removeClass('btn-progress');
loader.hide();
if (completeCallb instanceof Function) completeCallb();
}
});
});
};
在注释部分console.log(id))代码>,参数“id”返回空值,因此返回错误“405此路由不支持PUT方法”,因为未发送id。
以下是一个函数调用:
$('#updateBtn').myUpdateConfig({
formcomp: Vdef.formcomp.update,
urlcomp: Vdef.urlcomp,
errorcomp: Vdef.errorcomp.update,
editcomp: Vdef.editcomp,
id: $('#edit_id').val(),
successcallb: function() {
$('#editModal').modal('hide');
Vdef.formcomp.update.trigger('reset');
},
completecallb: function() {
table.draw();
}
});
但是当我只传递不带val()的$('#edit_id')
参数时,它会返回一个jquery对象。
结果:
和
结果:
因此,我想要的是如何传递取自$('#edit_id').val()
的“id”参数,该参数可以传递到myUpdateConfig()
在初始化小部件时,而不是在用户单击更新按钮时,您将获得\edit_id
的值
更改它,以便将选择器传递给小部件,并在事件侦听器中获取值
$.fn.myUpdateConfig = function({
formcomp: formcomp,
urlcomp: urlcomp,
errorcomp: errorcomp,
editcomp: editcomp,
selector: selector, // replacing id: id
beforeajaxcallb: beforeAjaxCallb = null,
successcallb: successCallb = null,
errorcallb: errorCallb = null,
completecallb: completeCallb = null,
}) {
let element = $(this);
element.click(function(e) {
e.preventDefault();
let formdata = new FormData(formcomp[0]);
formdata.append('_method', 'PUT');
formValidation('hide', '', [errorcomp, editcomp]);
element.addClass('btn-progress');
loader.show();
let id = $(selector).val(); // Get value of input
console.log(id));
if (beforeAjaxCallb instanceof Function) beforeAjaxCallb();
$.ajax({
url: urlcomp + id,
data: formdata,
method: 'POST',
dataType: 'json',
processData: false,
contentType: false,
success: function(data) {
formValidation('hide', '', [errorcomp, editcomp]);
succSwallTimer(data.message);
if (successCallb instanceof Function) successCallb();
},
error: function(data) {
errorMessage(data, errorcomp, editcomp);
if (errorCallb instanceof Function) errorCallb();
},
complete: function() {
element.removeClass('btn-progress');
loader.hide();
if (completeCallb instanceof Function) completeCallb();
}
});
});
};
$('#updateBtn').myUpdateConfig({
formcomp: Vdef.formcomp.update,
urlcomp: Vdef.urlcomp,
errorcomp: Vdef.errorcomp.update,
editcomp: Vdef.editcomp,
selector: '#edit_id', // replacing id: $("#edit_id").val()
successcallb: function() {
$('#editModal').modal('hide');
Vdef.formcomp.update.trigger('reset');
},
completecallb: function() {
table.draw();
}
});
当初始化小部件时,而不是当用户单击时,您正在设置id
。是的,就是这样,用户单击按钮后有没有方法调用该函数?因为它是一个更新函数,所以实际上有一个编辑按钮(将数据设置为输入),包括$(“#edit_id”),在点击更新按钮之前。我没有问任何问题,那是什么答案?几分钟前我在下面发布了一个解决方案。问题是有几个对myUpdateConfig()
函数的调用通过传递PHP传递“id”参数,例如id:
,所以它不是所有的选择器或更改为选择器:“
这不应该是$member['id']
?如何将$('#edit_id').val()
放入导致问题的JavaScript?一些小部件使用的另一种解决方案是允许参数成为值或函数。如果它是一个函数,小部件将在需要该值时调用该函数<代码>让实际_id=typeof id==“函数”?id.call(元素):id代码>