此代码在从1.3.2升级之前有效。到1.4.2现在我收到这个错误我不知道该怎么办...:
jQuery.ajax({
type: 'post',
url: '/ajax/store/product/getAssocDetail.ph',
dataType: 'json',
data: {
//productId: (document.location+"").split("=")[1],
vehicleId: id
},
success: function () {/*
if (r.length > 0) {
console.log(r.length);
for (var i = 0; i < r.length; i++) {
jQuery('#condition-'+i+'-price').val(r[i].price);
jQuery('#condition-'+i+'-bid').val(r[i].bid);/*
if (parseInt(r[i].on_amazon) == 1) {
jQuery('#on_amazon-'+i+'-yes').attr('checked', 'checked');
} else {
jQuery('#on_amazon-'+i+'-no').attr('checked', 'checked');
}
console.log('[value='+r[i].on_amazon+']');
console.log(jQuery('#condition-'+r[i].condition_id+'-on_amazon').filter('[value='+r[i].on_amazon+']'));
jQuery('#condition-'+r[i].condition_id+'-on_amazon').filter('[value='+r[i].on_amazon+']').attr('checked', true);
}
jQuery('#assocation-detail').show();
} else {
triggerNotification('x', 'Could not find any assocation data');
}*/
},
error: function () {
//document.triggerNotification('x', 'Unable to process your request, ajax file not found');
return false;
}
});
未捕获异常:[例外...“WrappedNative原型对象上的非法操作”nsresult:“0x8057000c(NS_ERROR_XPC_BAD_OP_ON_WN_PROTO)”location:“JS frame :: http://internal.ikeyless/js/jquery/jquery-1.4.2.min.js :: f :: line 132”data:no ]
第0行
更新
错误似乎出现在未压缩的jQuery 1.4.2(http://code.jquery.com/jquery-1.4.2.js)的第5437行
function add( key, value ) {
// If value is a function, invoke it and return its value
value = jQuery.isFunction(value) ? value() : value;
s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
}
更新
问题是通过ajax发布的其中一个值是dom节点: - \
答案 0 :(得分:2)
问题是通过ajax发布的其中一个值是dom节点: - \
为什么会这样:
jQuery正试图将该节点序列化为通用{}
样式的对象查找。使用for..in
循环,它获取节点的每个属性,包括appendChild
等DOM方法。引用的add
函数检查值是否为函数,如果是,则调用它。方法是一个函数,因此它将node.appendChild
称为普通函数,而不将this
设置为指向实际的Node
实例。这会导致特征XPC错误。
jQuery 1.3没有能够将可调用函数传递给参数映射的(相当无意义的IMO)功能,因此您不会收到此错误。序列化DOM节点仍然不明智,但它无声地失败而不是爆炸。
答案 1 :(得分:1)
您需要将fadeOut
代码包装在匿名函数中......
document.triggerNotification = function (type, message) {
jQuery(document.body).append("<div class='push-notification push-"+type+"' id='notification'>"+message+"</div>");
setTimeout(function(){
jQuery('#notification').fadeOut(1200, function () {
jQuery('#notification').remove();
})
}, 3000);
}
答案 2 :(得分:0)
jQuery(document.body)
对我来说似乎有点怀疑,虽然不能太确定。
请尝试jQuery("body")
。
This link有点松散相关,导致我的别名document.createElement
。这听起来可能是一回事。
您可以验证它实际上哪条线路出现故障吗?