JQuery-查找XML属性值
我为这个简单的问题道歉。恐怕,虽然我理解VBA、VBScript、TSQL以及一些C和Java,但JQuery对我来说有点像希腊语,完全不同!。因此,尽管我已经找到了这个问题的许多答案,但我无法理解其中的任何一个,因此我无法确定在我所看到的每个示例中应该自定义哪些代码,甚至我所看到的解决方案是否与我的问题相关。所以我有点希望一个非常具体的问题有一个简单的解决方案,然后我可以定制?非常非常感谢 我从SQL Server生成了以下XML文件:JQuery-查找XML属性值,jquery,xml,Jquery,Xml,我为这个简单的问题道歉。恐怕,虽然我理解VBA、VBScript、TSQL以及一些C和Java,但JQuery对我来说有点像希腊语,完全不同!。因此,尽管我已经找到了这个问题的许多答案,但我无法理解其中的任何一个,因此我无法确定在我所看到的每个示例中应该自定义哪些代码,甚至我所看到的解决方案是否与我的问题相关。所以我有点希望一个非常具体的问题有一个简单的解决方案,然后我可以定制?非常非常感谢 我从SQL Server生成了以下XML文件: <BillingRates> <
<BillingRates>
<BillingRate BillingRateID="3" BillingRateName="Name1" ChargeTypeName="Service" DefaultBillingAmt="106.0000" UnitsDisplay="Hours" ChargeTypeID="1"/>
<BillingRate BillingRateID="1" BillingRateName="Name2" ChargeTypeName="Service" DefaultBillingAmt="106.0000" UnitsDisplay="Hours" ChargeTypeID="1"/>
<BillingRate BillingRateID="4" BillingRateName="Name3" ChargeTypeName="Service" DefaultBillingAmt="70.0000" UnitsDisplay="Hours" ChargeTypeID="1"/>
...
</BillingRates>
我想做的是,当一个select控件被更改时,我想获得与用户在select控件中选择的BillingRateID相对应的DefaultBillingAmount。我们将调用select控件cbobillingrageid
该表单位于根目录中:Jobs/BillItemEdit.html
XML文件位于根目录中:XML/BillingRates.XML
它实际上是一个aspx文件,但重要的是表单不能完全重新加载,因此表单中输入的其他项不会消失。所以没有回发。如果你为了这个问题而假装这是一个普通的html表单,我可以将它改编成aspx
再次感谢
更新:谢谢你的帮助,安德烈·菲盖雷多-我已经基本上让它工作了。只有一个问题让我困惑。这是代码,主要基于您的代码。这是来自我的aspx代码,因此使用引用控件,但最终结果是在生成的HTML中引用正确的控件:
$('#<%=cboBillingRateID.ClientID %>').change(getBillingRate);
function getBillingRate() {
$.ajax({
url: '../XML/BillingRates.xml',
type: 'GET',
dataType: 'xml',
success: function (xml) {
var id = $('#<%=cboBillingRateID.ClientID %>').val();
var xmlDoc = $($.parseXML(xml));
var billingRate = xmlDoc
.find('BillingRate[BillingRateID="' + id + '"]')
.attr('DefaultBillingAmt');
alert("id = " + id + ", billingRate = " + billingRate.toString());
$('#<%=BillingRate.ClientID %>').val(billingRate.toString());
},
error: function () {
alert("An error occurred while processing XML file.");
}
});
}
唯一的问题是没有任何东西进入比林格勒。当我选择Name1记录时,为调试目的添加的警报显示,id=1,billingRate=undefined。Chrome控制台中没有错误。我不知道是什么原因造成的
再次感谢 您可以使用JS库将XML解析为对象,即:
var id = $('#cboBillingRateID').val();
var obj = somelib(xml);
var billingRate = obj.BillingRates.find(function(billingRate){
return billingRate.BillingRateID == id;
})
或者您可以使用:
非常感谢可能的副本。我成功地实现了这一点:$.ajax{url:'../XML/BillingRates.XML',类型:'get',数据类型:'XML',成功:函数XML{var id=$'cbobillingrid'.val;var xmlDoc=$$.parseXMLxml;var billingRate=xmlDoc.find'billingRate[BillingRateID='+id+']'.attr'DefaultBillingAmt';continued…continued alertid=+id+,billingRate=+billingRate;$'billingRate'.valbillingRate;},错误:函数{处理XML文件时出错。};…但是当我运行它时,alert debug语句的输出是,id=1,billingRate=undefined。对于格式错误,我深表歉意。我试图使格式正常工作,但显然注释不希望它正常工作。由于注释中的代码无法格式化,我更新了我的问题,以便您可以实际看到我正在尝试执行的操作,并阅读当前的内容ent问题是:使用console.log调试从xml到billingRate的每个步骤
var id = $('#cboBillingRateID').val();
var xmlDoc = $($.parseXML(xml));
var billingRate = xmlDoc
.find('BillingRate[BillingRateID="' + id + '"]')
.attr('DefaultBillingAmt');