JQuery的AJAX例外只是Firefox:“节点不能在层次结构中的特定点插入”(Hierarch

2019-06-26 05:36发布

很奇怪的问题:我有2个部分下拉列表中,选择其中一个国家会再增加一个第二个下拉让你在该国MSA区域的列表。

这是使用jQuery的GET请求,返回在选择下拉区的列表中选择控制器完成的,像

jQuery(function($) {
  // when the #area_state field changes
  $("#area_state").change(
    function() {
      // make a call and replace the content
      var state = $('select#area_state :selected').val();
      if(state == "") state="0";
      jQuery.get(
        '/getmsas/' + state,
        function(data){ $("#msas").html(data); }
      )
    return false;
    }
  );
})

注意-此代码是改编自教程这里: http://www.petermac.com/rails-3-jquery-and-multi-select-dependencies/

这适用于Chrome和IE罚款,但在Firefox(13.0.1),这是行不通的,产生两个错误:

Error: junk after document element
Source File: http://localhost:3000/getmsas/Connecticut
Line: 2, Column: 1
Source Code:
<select id="area_msa" name="area[msa]"><option value="">Select Area (Optional)</option>

Error: uncaught exception: [Exception... "Node cannot be inserted at the specified point
in the hierarchy"  code: "3" nsresult: "0x80530003 (HierarchyRequestError)"  location:   
"http://localhost:3000/assets/jquery.js?body=1 Line: 6498"]

Answer 1:

所以我蛮力强行解决这个。 我真的不明白,为什么这个问题是特定于火狐还,但可能会进行调查。

我能够通过添加的dataType明确声明它作为HTML参数(get方法的最后一个参数)来解决这个问题。

得到的是jQuery的文档中描述如下: http://api.jquery.com/jQuery.get/

jQuery.get( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

使作品的代码是通过添加“HTML”作为具体的数据类型参数:

jQuery(function($) {
  // when the #area_state field changes
  $("#area_state").change(
    function() {
      // make a call and replace the content
      var state = $('select#area_state :selected').val();
      if(state == "") state="0";
      jQuery.get(
        '/getmsas/' + state,
        function(data){ $("#msas").html(data); },
        "html"
        // ABOVE LINE IS THE FIX
      )
    return false;
    }
  );
})

同样,我需要调查为什么这是火狐特定的; 这是推动我疯了,所以希望它可以帮助别人了。



Answer 2:

不知道这是否只是一个不完整的复制粘贴,但

<select id="area_msa" name="area[msa]"><option value="">Select Area (Optional)</option>

需要收出选择标记,否则你的HTML的其余部分被嵌套在select元素......这是坏的范围内。



Answer 3:

我只在FF有同样的问题。 我的servlet返航回文本与内容类型“文本”。 FF将此解释为文本/ XML,并试图在体内插入XML - 因此错误

我改变了内容类型为text / plain的 - 一切都很好



Answer 4:

我已经解决了这个加

header('Content-Type: text/html; charset=utf-8');

在PHP中获取文件。 当标题不正确设置错误发生时(从一台服务器转移到另一个和旧服务器上,当有这个它工作得很好,在新的没有,直到我设置的标头)



Answer 5:

我有同样的问题,当回答是空的,比如,我期待着与记录的表也就只有发生,但也没有任何显示。



文章来源: JQuery AJAX exception only in Firefox: “Node cannot be inserted at the specified point in the hierarchy” (HierarchyRequestError)