jquery ajax调用强制响应中的XML元素名称为小写
jquery ajax call is forcing XML element names in the response to lowercase
我有以下代码:
var frm = $('#login');
frm.submit(function (ev) {
var postData = $(this).serializeArray();
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
datatype: "xml",
data: postData,
success: function (data, textStatus, jqXHR) {
var saml = $("saml2'':Assertion", (new XMLSerializer()).serializeToString(data));
var $assertion = $('<div/>').text(saml[0].outerHTML);
$('<pre/>').appendTo('#body').text(vkbeautify.xml($assertion.text()));
},
error: function (jqXHR, textStatus, errorThrown) {
alert('login failed - '.concat(jqXHR.responseText));
}
});
我正在调用的服务返回一个XML文档,该文档具有CamelCase中的元素名称。文件开始:
<ns3:RequestSecurityTokenResponse xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns10="http://www.w3.org/2000/09/xmldsig#" xmlns:ns2="http://www.w3.org/2005/08/addressing" xmlns:ns3="http://docs.oasis-open.org/ws-sx/ws-trust/200512/" xmlns:ns4="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns5="http://docs.oasis-open.org/ws-sx/ws-trust/200802" xmlns:ns6="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:ns7="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:ns8="http://schemas.xmlsoap.org/ws/2005/02/sc" xmlns:ns9="http://schemas.xmlsoap.org/ws/2006/02/addressingidentity">
<ns3:RequestedSecurityToken>
我遇到的问题是,当我在调试器中检查返回的数据对象时(在执行以"var saml"开头的行之前有一个断点),我可以看到元素名称都是小写的,例如,顶级元素现在是ns3:requestsecuritytokenresponse。
我可以看到电线上的信息是大写的。
有什么想法可以防止Ajax强制元素名称小写吗?
谢谢。
我认为问题可能是JQuery将数据解释为HTML而不是XML。由于您没有正确设置dataType
属性,根据文档,它将尝试进行智能猜测。
尝试更改为:
dataType: "xml"
^
之后,如果您仍然看到相同的行为,可能只是调试器没有正确显示内容。尝试使用alert()
调用显示序列化的XML,并检查问题是否仍然存在。
请注意,在创建saml
变量的那一行中,您将所有内容都强制为HTML,因此我希望元素名称在那一行之后小写,而不是在之前。
相关文章:
- 使用Jquery添加XML元素
- 如何使用Extendscript scriptui插入、更新、删除XML元素的值
- 使用 javascript 中的表单元素构建一个 xml 字符串
- 从XML字符串创建DOM元素,如何使用.getElementsByName()
- 如何使用javascript查找从xml中检索到的元素数量
- 为什么使用自定义标记创建元素会在 IE9 或 10 的 outerHTML 中添加 xml 命名空间,直到调用 .fin
- 设置名称与 XML 的名称生产不匹配的 DOM 元素的属性
- 如何在IE上创建xml元素并添加nodeValue
- 在javascript中获取xml dom子元素
- 从 XML 元素获取文本
- 无法使用 jquery 获取 xml 元素文本值
- 获取 XSLT 中的 XML 元素
- 从 XML 获取元素时出现问题
- 未捕获的语法错误:无法在“元素”上设置“innerHTML”属性:提供的标记是无效的 XML
- 根据元素的值从 XML 文件中提取文本
- 如何使用 Jquery 获取 XML 文件,并在每次加载时以随机顺序显示元素一次
- 如何在javascript中解析xml并从中提取xslt元素
- 在jQuery的XML文档中选择和操作DOM中的元素
- Ajax 对 xml 页面的响应以获取标题元素不起作用
- 如何在 jQuery 中读取 xml 文件内容并在 html 元素中显示