Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
JQuery-查找XML属性值_Jquery_Xml - Fatal编程技术网

JQuery-查找XML属性值

JQuery-查找XML属性值,jquery,xml,Jquery,Xml,我为这个简单的问题道歉。恐怕,虽然我理解VBA、VBScript、TSQL以及一些C和Java,但JQuery对我来说有点像希腊语,完全不同!。因此,尽管我已经找到了这个问题的许多答案,但我无法理解其中的任何一个,因此我无法确定在我所看到的每个示例中应该自定义哪些代码,甚至我所看到的解决方案是否与我的问题相关。所以我有点希望一个非常具体的问题有一个简单的解决方案,然后我可以定制?非常非常感谢 我从SQL Server生成了以下XML文件: <BillingRates> <

我为这个简单的问题道歉。恐怕,虽然我理解VBA、VBScript、TSQL以及一些C和Java,但JQuery对我来说有点像希腊语,完全不同!。因此,尽管我已经找到了这个问题的许多答案,但我无法理解其中的任何一个,因此我无法确定在我所看到的每个示例中应该自定义哪些代码,甚至我所看到的解决方案是否与我的问题相关。所以我有点希望一个非常具体的问题有一个简单的解决方案,然后我可以定制?非常非常感谢

我从SQL Server生成了以下XML文件:

<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');