在带有PhoneGap的Windows Phone上使用jQuery .find()

时间:2013-04-24 14:00:28

标签: jquery windows-phone-7 cordova windows-phone-8

我在Windows Phone上遇到了Cordova 2.6.0和jQuery 1.8.1的问题!

当我制作$(xmlHttpRequest.responseXML).find("Item")(适用于iOS / Android和浏览器)时,它会在Windows手机上返回一个空元素...我需要制作一个xmlHttpRequest.responseXML.documentElement并导航孩子们找到我的元素......

所以问题似乎是jQuery,但为什么呢?有什么想法吗?

谢谢!

编辑:我得到的SOAP Envelop是这样的(在WP8上看到Fiddler)

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
  <s:Body>
    <MethodName xmlns="http://url.com/services/contract">
      <MethodNameResult xmlns:a="http://schemas.datacontract.org/2004/07/xxx.yyy.aaa.bb.cc.Result" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
        <a:Item xmlns:b="http://schemas.datacontract.org/2004/07/xxx.yyy.aaa.bb.cc"> 
          <b:Active>Active</b:Active>
          <b:Comment i:nil="true"/>
          <b:Company>My company</b:Company>
          <b:DisplayName>The best company ever</b:DisplayName>
          <b:Email>contact@url.com</b:Email>
          <b:Fax i:nil="true"/>
          <b:FirstName>Alx</b:FirstName>
          <b:GenderTypeId>Male</b:GenderTypeId>
          ...

编辑:.find("a:Item")无效!

2 个答案:

答案 0 :(得分:2)

另一种解决方案是制作这样的新功能:

 $.fn.filterNode = function(name) {
    return this.find('*').filter(function() {
       return this.nodeName === name;
    });
 };

并将名称设为“a:Item”!

我不知道为什么,但此解决方案适用于WindowsPhone Web App!

答案 1 :(得分:1)

您不应该以这种方式解析XML,而是使用jQuery和DataType xml的ajax方法。 我不知道这是否会导致问题,但可能是。

查看此帖子: Can XML be parsed reliably using jQuery's $(responseXML) syntax?