2010-02-22 143 views
2

这大概是那么微不足道,我很惭愧地会问这个......获取根节点属性,jQuery的/ XML

为什么在世界上是这样不工作?

<?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); 
      }); 

一切正常,只是我无法获得过滤器_id和max_values属性。 这是提示框内容:

过滤器_id:空max_values:NaN的

而且,为什么当我指定作为jquery .post() docu描述的数据类型“XML”,没有回来给我(是以往任何时候都没有得到回应 - 回调永远不会执行)。

+0

将数据类型设置为'xml'时无法正常工作,这很奇怪,因为我的工作方式如此,而且RafH也以这种方式工作 – 2010-02-22 22:53:08

回答

2

妈...你没事。只是我忘记在输出xml之前设置正确的标题...

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

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

然而奇怪的是一切的除了这两个根节点属性的工作:)

谢谢你指着我在正确的方向。

+1

考虑接受答案,或者至少向我们展示一个答案小gratidute和投票:) :) – 2010-02-22 23:25:41

+0

我投票了你的文章。然而,标题是问题,所以为了找出解决方案的人,我应该将自己的答案标记为“正确答案”,尽管我不想要任何归因:) – 2010-02-23 13:41:18

+1

如果我们的答案都不正确,并且你已经完成了,那么为什么不标记你的答案呢? :) – 2010-02-23 15:41:12

1

也许不是最好的做法,但它的工作原理

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

我已经尝试设置数据类型为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'); 
+1

对于我也适用于xml数据类型 – RafH 2010-02-22 22:50:44