Php 在ajax xml响应中正确检测数字数据
我使用jQuery发布ajax请求,使用PHP构建XML响应。一切都很好,但我想知道我用于数据键入的方法,以及是否有更标准或更正确的方法。我的XML通常如下所示,一些属性表示文本,其他属性表示数字数据:Php 在ajax xml响应中正确检测数字数据,php,javascript,jquery,xml,ajax,Php,Javascript,Jquery,Xml,Ajax,我使用jQuery发布ajax请求,使用PHP构建XML响应。一切都很好,但我想知道我用于数据键入的方法,以及是否有更标准或更正确的方法。我的XML通常如下所示,一些属性表示文本,其他属性表示数字数据: <UnitConversions> <UnitConversion basicUnitName="mile" conversionFactor="5280" conversionUnit="foot"/> <UnitConversion basicU
<UnitConversions>
<UnitConversion basicUnitName="mile" conversionFactor="5280" conversionUnit="foot"/>
<UnitConversion basicUnitName="mile" conversionFactor="1760" conversionUnit="yard"/>
</UnitConversions>
我在早期检查数值时遇到了问题,如if(someValueFromTheXML==1)
——这将始终计算为false
,因为XML中的值是字符串“1”。因此,我在XML中的关键位置添加了节点,以告诉客户端代码哪些内容应解释为数字,哪些内容应保留为文本:
<UnitConversions>
<NumericFields>
<NumericField fieldName="conversionFactor"/>
</NumericFields>
<UnitConversion basicUnitName="mile" conversionFactor="5280" conversionUnit="foot"/>
<UnitConversion basicUnitName="mile" conversionFactor="1760" conversionUnit="yard"/>
</UnitConversions>
现在我将NumericFields节点传递给构造函数,这样它就知道哪些字段要存储为实际的数字
这一切都很好,但这似乎是一个幼稚的解决方案,甚至可能是一个黑客。看起来外面会有更复杂的东西。这个问题似乎与XML模式有关,但我的谷歌搜索似乎表明,模式更多的是验证,而不是键入,而且它们似乎更适合服务器端处理
js知道XML中哪些字段是数字的标准/正确方法是什么?您可以使用isNaN()
来检测字符串是否是数字。例如,isNaN(“5043”)
返回false,表示可以将“5043”解析为数字。然后,只需使用parseInt()
来比较值。例如:
if (parseInt(someValueFromTheXML, 10) === 1) {
...
}
另一种方法是使用==运算符的松散比较,以便“1”==1的计算结果为true。然而,最好使用第一条建议。因为XML/HTML属性总是字符串,所以真的没有别的办法了。我松了一口气。我有点期待着大量的答案,这是一个简单的、行业标准答案的愚蠢问题。我非常喜欢
isNaN()
这个想法。多谢。
if (parseInt(someValueFromTheXML, 10) === 1) {
...
}