Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQuery可以';仅在Firefox中找不到XMLDocument中的元素_Javascript_Jquery_Firefox_Xmldocument - Fatal编程技术网

Javascript JQuery可以';仅在Firefox中找不到XMLDocument中的元素

Javascript JQuery可以';仅在Firefox中找不到XMLDocument中的元素,javascript,jquery,firefox,xmldocument,Javascript,Jquery,Firefox,Xmldocument,我调用了一个Web服务,它将返回下一个原始响应 HTTP/1.1 200 OK Cache-Control: private Content-Length: 1516 Content-Type: text/xml; charset=utf-8 Server: Microsoft-IIS/8.5 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Access-Control-Allow-Origin: * Access-Control-Al

我调用了一个Web服务,它将返回下一个原始响应

    HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 1516
Content-Type: text/xml; charset=utf-8
Server: Microsoft-IIS/8.5
X-AspNet-Version: 4.0.30319
X-Powered-By: ASP.NET
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
Date: Fri, 12 Feb 2016 10:28:58 GMT

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">
    <s:Body>
        <OperationListResponse xmlns="http://tempuri.org/">
            <OperationListResult xmlns:a="http://schemas.datacontract.org/2004/07/" xmlns:i="http://www.w3.org/2001/XMLSchema-instance">
                <a:data>123</a:data>
                <a:operation_id i:nil="true"/>
                <a:status>OK</a:status>
            </OperationListResult>
        </OperationListResponse>
    </s:Body>
</s:Envelope>
我得到的不是“OK”,而是“OK”。这只发生在Firefox中。奇怪的是,它在Chrome、Opera、Edge和Safari中表现出色。 在Firefox中调试时,观察dataResponse对象,我可以看到节点“status”的值为“OK”

关于如何解决这个问题有什么线索吗

编辑: 我试着做了Jai建议的更改,结果从firefox得到了奇怪的结果。如果我观察一个变量来进行“查找”,我可以看到文本。如果我试图通过直接键入“$(dados).find('a\'status').text()”进行查找,我看不到任何结果。 Firefox监视面板:

镀铬手表面板:

正如我在评论中发布的用
\
转义

x = $(dataResponse).find('a\\:status').text();

不过,除了firefox之外,它在其他浏览器中也能工作,这毫无意义。

Jquery可能与此无关,除了它是一个错误的工作工具之外。对于元素查找,它主要委托给。XML文档有名称空间,而对于名称空间

但名称空间速记要求首先声明从速记到名称空间URI的映射。例如,XPath查找通过的名称空间解析器参数完成,样式表中的选择器从中检索它们

querySelectorAll
不接受支持此类名称空间解析的参数,因此只能指定任何名称空间、默认名称空间和任何名称空间选择器

换句话说,在
a->http://schemas.datacontract.org/2004/07/
名称空间通过
querySelectorAll
使用
a | status
选择器,事实上,它实际上应该是。而
a:status
只是一个浏览器不知道的伪元素选择器

一个更通用的
*| status
选择器应该与之匹配,但它也可能通过从其他名称空间中选择status元素而超越它


如果您想在XML文档中执行名称空间感知遍历,您可能应该改用XPath尝试转义冒号。也许你需要分享更多的代码,包括请求的部分以及你如何读取和解析它。@Jai它很有意义。添加一个答案,确保它会被检查为正确的。我同意Jai的评论,但我真的不知道你发布的代码为什么会在其他浏览器上工作…?我不知道这在任何浏览器中是如何工作的,因为标签是
,而不是
。?这在Firefox中非常有效,但在Chrome中,我现在在“watch”中得到了一个x=“”面板另外,在Chrome中尝试了:状态,但效果也不太好。
x = $(dataResponse).find('a\\:status').text();