Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.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
Php 在ajax xml响应中正确检测数字数据_Php_Javascript_Jquery_Xml_Ajax - Fatal编程技术网

Php 在ajax 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

我使用jQuery发布ajax请求,使用PHP构建XML响应。一切都很好,但我想知道我用于数据键入的方法,以及是否有更标准或更正确的方法。我的XML通常如下所示,一些属性表示文本,其他属性表示数字数据:

<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) {
 ...
}