Javascript 非法调用错误
我的脚本页面中只有一个函数,它给了我这个错误:uncaughttypeerror:非法调用。老实说,我以前从未见过这个错误,我在网上发现的其他案例似乎都不适用于我。下面是我的jquery,我不认为有必要提供任何其他部分,但请告诉我,我可以发布其他部分Javascript 非法调用错误,javascript,jquery,post,live,Javascript,Jquery,Post,Live,我的脚本页面中只有一个函数,它给了我这个错误:uncaughttypeerror:非法调用。老实说,我以前从未见过这个错误,我在网上发现的其他案例似乎都不适用于我。下面是我的jquery,我不认为有必要提供任何其他部分,但请告诉我,我可以发布其他部分 $(document).ready(function () { /*----UPDATE BOX REQUEST----*/ $(".boxesChange").live("click", function () {
$(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;
});
});
我假设错误在这部分中:
function (response) {
$(this).closest(".boxesScheduleEntry").css("background-color", "#ccffcc");
}
在这里,我想您希望这个与上面的一样,当您使用最接近来获取“tr”元素时。但是在这里,这是$post imho的上下文
您需要在事件处理程序函数的顶部绑定或执行var-boxChange=$(这),
,然后使用缓存引用问题在于$。post
调用。您试图将'delivered'
设置为delivered
,这是一个jQuery对象,我想您的意思是deliveredBoolean
另外,在回调函数中,这个不是您所认为的,它是jqXHR对象,而不是元素
var $this = $(this);
$.post(
'boxesChange.php',
{
'delivered': deliveredBoolean,
'boxesDelivered': boxesDelivered,
'bubbleWrapDelivered': bubbleWrapDelivered,
'supplyRequestId': supplyRequestId
},
function (response) {
$this.closest(".boxesScheduleEntry").css("background-color", "#ccffcc");
}
);
当delivered
是jQuery对象时,使用'delivered':delivered
是否奇怪?也许你应该做delivered:delivered.is(“:checked”)?1:0
或者使用你的deliveredBoolean
工具?@jamund我不知道你把它放在哪里了exactly@radleybobins:在您的$.post
通话中。在传递给$.post的参数中表示。。。这里有'delivered':delivered,
,它显然应该传递deliveredBoolean
值,而不是delivered
对象的内容。。。所以,试着去做'delivered':deliveredBoolean,
啊,我明白了,这就消除了错误,谢谢!如果你把它改成一个答案,我可以把它标记为正确的,谢谢你的解释!这是一个很好的想法,但我完全放弃了,问题依然存在。