这可能是如此微不足道,我很惭愧地问这个......
为什么世界上这不起作用?
<?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);
});
一切正常,但我无法获得filter_id和max_values属性。 这是警报框内容:
filter_id:null max_values:NaN
而且,为什么当我按照jquery .post() docu中的描述指定数据类型“xml”时,没有任何东西可以回复给我(没有收到任何响应 - 从不执行回调)。
答案 0 :(得分:3)
我尝试将 dataType设置为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 :(得分:2)
因此将输出标题设置为“content-type:text / xml”完全解决了这个问题。
似乎jQuery在内容类型不符合预期时不会执行回调。
然而,除了这两个根节点属性之外,所有内容都很有效:)
感谢您指点我正确的方向。
答案 2 :(得分:1)
也许不是最好的做法,但它有效
var filter_id = $(response).find("value:first").parent().attr('id');
var max_values = $(response).find("value:first").parent().attr('max_values');