获取根节点属性jQuery/XML

获取根节点属性jQuery/XML,jquery,xml,ajax,response,Jquery,Xml,Ajax,Response,这可能太微不足道了,我不好意思问这个 这到底为什么不起作用 <?xml version="1.0" encoding="UTF-8"?> <filter id="4" max_values="10"> <value id="9">strategy</value> <value id="11">simulation</value> <value id="12">shooter</val

这可能太微不足道了,我不好意思问这个

这到底为什么不起作用

<?xml version="1.0" encoding="UTF-8"?>
<filter id="4" max_values="10">
    <value id="9">strategy</value>
    <value id="11">simulation</value>
    <value id="12">shooter</value>
</filter>

策略
模拟
射手
这是我请求页面时得到的xml响应,其中包含:

$.post('afilters/getvaluesXml', {filter_id: fid}, 
            function(response){
                var fields;
                alert(response);

                var filter_id = $(response).find('filter').attr('id');
                var max_values = parseInt($(response).find('filter').attr('max_values'));

                alert('filter_id: '+filter_id+' max_values:'+max_values);

                $(response).find('value').each(function(){
                    var id = $(this).attr('id');
                    var value = $(this).text();

                    if(max_values == 1){
                        fields = fields+'<input type="radio" name="'+filter_id+'" value="'+id+'"/>'+value+'<br/>';
                    } else {
                        fields = fields+'<input type="checkbox" name="'+filter_id+'[]" value="'+id+'"/>'+value+'<br/>';
                    }

                });
                //alert(fields);
                $('#'+filter_id+'_values').text(fields);
            });
$.post('afilter/getvaluesXml',{filter\u id:fid},
功能(响应){
var字段;
警报(响应);
var filter_id=$(response).find('filter').attr('id');
var max_values=parseInt($(响应).find('filter').attr('max_values'));
警报(“过滤器id:”+过滤器id+“最大值:”+最大值);
$(响应)。查找('value')。每个(函数(){
var id=$(this.attr('id');
var值=$(this.text();
如果(最大值==1){
字段=字段+“”+值+”
; }否则{ 字段=字段+“”+值+”
; } }); //警报(字段); $(“#”+过滤器_id+“_值”)。文本(字段); });
一切正常,但我无法获取过滤器id和最大值属性。 这是警报框内容:

过滤器id:null最大值:NaN


还有,为什么当我如中所述指定数据类型“xml”时,什么都不会返回给我(从未收到响应-从未执行回调)。

可能不是最佳实践,但它是有效的

var filter_id = $(response).find("value:first").parent().attr('id');
var max_values = $(response).find("value:first").parent().attr('max_values');

我曾尝试将数据类型设置为xml,效果非常好,请看下面的片段:

$.post('afilters/getvaluesXml', {filter_id: fid}, function(response){
  var filter_id = $('filter', response).attr('id');
  var max_values = parseInt($('filter', response).attr('max_values'));
  alert('filter_id: '+filter_id+' max_values:'+max_values);
 }, 'xml');

该死的。。。你很好。只是我忘记了在输出xml之前设置正确的头

因此,将输出标题设置为“content-type:text/xml”完全解决了这个问题

当内容类型不符合预期时,jQuery似乎不会执行回调

然而,奇怪的是,除了这两个根节点属性之外的所有属性都起作用了:)


谢谢你给我指出了正确的方向。

在将数据类型设置为
xml
时不起作用是很奇怪的,因为我是这样做的,而RafH是这样做的:考虑接受答案,或者至少给我们一点奖励并投票:我投票支持了你的帖子。然而,标题是问题所在,因此为了有人试图确定解决方案,我应该将我自己的答案标记为“正确答案”,尽管我不想对其进行任何归因:)如果我们的答案都不正确,并且您已经解决了,那么为什么不标记您的答案?:)Omer,Juraj,我也有同样的问题,不容易识别,搜索了几次才找到。多亏了你们俩,你们的共同努力使我渡过了难关。