非法调用错误
我的脚本页面中只有一个函数,它给了我这个错误:Uncaught TypeError:非法调用。 说实话,我以前从未见过这个错误,我在网上找到的其他案例似乎都没有适用于我。 我的jquery在下面,我不认为任何其他部分是必要的,但让我知道,我可以发布其他部分。
$(document).ready(function () { /*----UPDATE BOX REQUEST----*/ $(".boxesChange").live("click", function () { entry = $(this).closest("tr"); delivered = $(entry).find("#delivered"); if ((delivered).is(":checked")) { deliveredBoolean = "1"; } else { deliveredBoolean = "0"; } boxesDelivered = $(entry).find("#boxesDelivered").val(); bubbleWrapDelivered = $(entry).find("#bubbleWrapDelivered").val(); supplyRequestId = $(entry).find(".boxesSupplyRequestId").val(); $.post('boxesChange.php', { 'delivered': delivered, 'boxesDelivered': boxesDelivered, 'bubbleWrapDelivered': bubbleWrapDelivered, 'supplyRequestId': supplyRequestId }, function (response) { $(this).closest(".boxesScheduleEntry").css("background-color", "#ccffcc"); }); return false; }); });
问题出在您的$.post
调用中。 你试图将'delivered'
设置为delivered
,这是一个jQuery对象,我假设你的意思是deliveredBoolean
。
此外,在回调函数中, this
不是您认为的,它是jqXHR对象,而不是元素。
var $this = $(this); $.post( 'boxesChange.php', { 'delivered': deliveredBoolean, 'boxesDelivered': boxesDelivered, 'bubbleWrapDelivered': bubbleWrapDelivered, 'supplyRequestId': supplyRequestId }, function (response) { $this.closest(".boxesScheduleEntry").css("background-color", "#ccffcc"); } );
我假设错误在这部分内部:
function (response) { $(this).closest(".boxesScheduleEntry").css("background-color", "#ccffcc"); }
在这里,我认为当你使用最接近的“tr”元素时,你希望this
与上面相同。 但在这里, this
是$ .post imho的背景。
你需要绑定或者更确切地说var boxChange = $(this),
在事件处理函数的顶部,然后使用缓存的引用