破解jQuery 1.4.2功能?

时间:2010-09-21 14:24:19

标签: javascript jquery

此代码在从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节点: - \

3 个答案:

答案 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。这听起来可能是一回事。

您可以验证它实际上哪条线路出现故障吗?