我调用了一个返回下一个原始响应的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>
当我在我的javascript代码中获取此XML时,我正在尝试使用下一个代码读取元素“status”:
//dataResponse is my javascript valid XMLDocument
x = $(dataResponse).find('status').text();
而不是“好”,我得到了“”。这只发生在Firefox中。奇怪的是它在Chrome,Opera,Edge和Safari中运行良好。 在Firefox中调试时,看一下dataResponse对象,我实际上可以看到节点“status”的值为“OK”。
有关如何解决此问题的任何线索?
编辑: 我已经尝试过做Jai建议的更改,我从firefox获得了奇怪的结果。如果我看一个变量“查找”,我可以看到文字。如果我试图通过直接输入“$(dados).find('a \:status')。text()”来查找,我看不到任何结果。 Firefox手表面板:
答案 0 :(得分:2)
正如我在评论中发布的那样,:
与\\
一起逃避:
x = $(dataResponse).find('a\\:status').text();
但是,它没有任何意义,在其他浏览器中有效,但是firefox。
答案 1 :(得分:1)
Jquery可能与此无关,除了作为工作的错误工具。对于元素查找,它主要委托给querySelectorAll。 XML文档具有名称空间,selectors have special handling用于名称空间。
但是,命名空间shorthands要求首先声明从简写到命名空间URI的映射。例如。 XPath查找通过Document.evaluate的命名空间解析器参数执行此操作,样式表中的选择器从@namespace declarations
中检索它们 querySelectorAll
不接受支持此类命名空间解析的参数,因此只能指定no-namespace,default-namespace和any-namespace选择器。
换句话说,无法将status
命名空间中的a -> http://schemas.datacontract.org/2004/07/
元素与a|status
选择器匹配到querySelectorAll
,实际上它应该a:status
3}}。 *|status
只是一个浏览器不知道的伪元素选择器。
更通用的CREATE TRIGGER MY_TRIGGER
ON MY_TABLE
FOR INSERT AS
DECLARE @myVariable;
DECLARE InsertedRows CURSOR FAST_FORWARD FOR SELECT A_COLUMN FROM INSERTED;
OPEN InsertedRows;
FETCH NEXT FROM InsertedRows INTO @NewOrderCode;
...
INSERT INTO ANOTHER_TABLE (
CODE,
DATE_INSERTED
) VALUES (
@myVariable,
GETDATE()
);
...etc
选择器应该匹配它,但它也可能通过从其他命名空间中选择状态元素而超支。
如果要在XML文档中进行名称空间感知遍历,则可能应该使用XPath。