非法调用错误
我的脚本页面只有一个函数,它给了我这个错误: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");
}
);
谢谢你只是写同样的:) – 2012-04-19 17:15:44
@TobiasKrogh:伟大的思想家都认为:-) – 2012-04-19 17:16:39
我认为错误的是这一部分的内部:
function (response) {
$(this).closest(".boxesScheduleEntry").css("background-color", "#ccffcc");
}
在这里,我想你想,当你正在使用最接近得到“TR”元素this
是与上面相同。但在这里this
是$ .post imho的上下文。
你要么需要绑定或者说在事件处理函数的顶部做var boxChange = $(this),
和使用缓存的参考事后
这是一个很好的想法,但我彻底解决了问题,问题依然存在。 – radleybobins 2012-04-19 17:09:30
当'deliver'是一个jQuery对象时,使用''deliver':delivered'是否奇怪?也许你应该做'deliver:deliver.is(“:checked”)? 1:0'或使用你的'deliverBoolean'的东西? – 2012-04-19 16:57:33
@jamund我不确定我是否明白你在那里放置那个 – radleybobins 2012-04-19 17:03:48
@radleybobins:在你的$ .post调用中。 – 2012-04-19 17:11:18