jQuery.find()。each(fn)在Firefox中不起作用

时间:2011-06-20 11:01:38

标签: javascript jquery xml firefox

我对一个XML文件进行了AJAX调用,下面给出了源代码。它在Chrome中完美运行,但在Firefox中无效。在进行调试时,我发现它没有进入$(响应).find(“simpleType”)的循环。每个(Firefox中的function()。

有人知道我的代码中有什么问题吗?

$.ajax({
  type:"GET",
  url:"views/workspace/branching_forms/StudentModelDescription.xml",
  dataType:"xml",
  error:function(XMLHttpRequest, textStatus, errorThrown){
      alert("error="+XMLHttpRequest+" error2="+textStatus+" error3="+errorThrown);
  },
  success:function(response){   
      var i=1;
      console.log("response="+response);
      $(response).find("simpleType").each(function(){                        
         adaptation_type_name[i]=$.trim($(this).find("documentation").text());                                                              
         var restriction = $(this).find("restriction[base=xs:string]");
         j=1;
         var values=new Array();        
         $(restriction).find("enumeration").each(function(){
            var tmp=$(this).attr("value");                                      
            values[j] = tmp;
            j++;
         });
         adaptation_type_variables[i]=values;               
         console.log("adaptation_type_name="+adaptation_type_name[i]+", adaptation_type_variables="+adaptation_type_variables[i]);
         i++;                        
      });                   
      for(var i=1;i<=adaptation_type_name.length;i++)                                       
        $('#adaptation_type_dialog #branching_adaptation_type').append($("<option></option>").attr("value",i).text(adaptation_type_name[i]));

  }
});

StudentModelDescription.xml的内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:simpleType name="browser" id="context_browser">
      <xs:annotation>
          <xs:documentation xml:lang="en">Web Browser</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
          <xs:enumeration value="Safari" id="1" />
          <xs:enumeration value="Google Chrome" id="2" />
          <xs:enumeration value="Opera" id="3" />
          <xs:enumeration value="Mozilla Firefox" id="4" />
          <xs:enumeration value="Internet Explorer" id="5" />
      </xs:restriction>
  </xs:simpleType>    
  <xs:simpleType name="networktype" id="context_networktype">
      <xs:annotation>
          <xs:documentation xml:lang="en">Network Type</xs:documentation>
      </xs:annotation>
      <xs:restriction base="xs:string">
          <xs:enumeration value="ADSL2+/Cable (High capacity)" id="1" />
          <xs:enumeration value="ADSL / HSPA (Moderate capacity)" id="2" />
          <xs:enumeration value="Dialup / GPRS (Low capacity)" id="3" />
      </xs:restriction>
  </xs:simpleType>
</xs:schema>

2 个答案:

答案 0 :(得分:0)

根据jQuery XML Ajax Call failing in... FIREFOX!确保服务器以正确的mime类型标头响应。

答案 1 :(得分:0)

我以一种非常神秘的方式解决了这个问题。我从所有XML标记中删除了xs:命名空间,删除了<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">并将所有XML代码包含在<someRootTag> ... </someRootTag>标记内。