我正在尝试从XML文件中读取设置。我想我没有正确加载对象,或者我的选择器可能没有按我认为的那样做。 appendImages
函数内部的日志消息未执行,我不确定原因。
$(document).ready(function() {
$.ajax({
type: "GET",
url: "banner_slider/settings.xml",
dataType: "xml",
success: startSlider
});
});
function startSlider(xml) {
var bWidth = $('#banner').width(), bHeight = $('#banner').height();
bWidth += 'px';
bHeight += 'px';
$('#banner').attr( 'style', 'height: '+bHeight );
$('#banner').attr( 'style', 'width: '+bWidth );
$('#banner img').attr( 'id', 'origImg');
appendImages( bWidth, bHeight, xml );
$('#origImg').remove();
$('#banner').cycle();
}
function appendImages( bWidth, bHeight, xml ) {
console.log('appendImages executed');
$(xml).find('img').each(function() {
var path = $(this).text();
console.log('path: '+path);
$('#banner').append('<img width="'+bWidth+'" height="'+bHeight+'" src="'+path+'" />');
});
}
XML示例:
<?xml version="1.0" encoding="utf-8" ?>
<images>
<img>test1</img>
<img>test2</img>
<img>test3</img>
</images>
答案 0 :(得分:1)
试试这个,你必须将响应传递给成功处理程序,我已修改你的代码以删除设置但你可以添加它们并使用.parseXML
而不是使用jquery的DOM遍历方法来遍历XML
function startSlider(xml) {
console.log("xml recieved successfully");
console.log(window.$xml);
appendImages(window.$xml);
}
function appendImages( xml ) {
console.log('appendImages executed');
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$imgArr = $xml.find( "img" );
console.log($imgArr);
$($imgArr).each(function(i,j){
console.log($(j).text());
});
}
$(function(){
window.$xml="<images><img>test1</img><img>test2</img><img>test3</img></images>";
$.ajax({
type: "GET",
url: "/echo/json/",
dataType: "xml",
success: startSlider(window.$xml)
});
});
答案 1 :(得分:0)
我认为您需要将数据从ajax回调正确地移交给您的函数。
success: function(data, textStatus, jqXHR) {
startSlider(data);
}
上查看此演示
答案 2 :(得分:0)
Musa修复语法错误后,我的代码按预期运行。谢谢。
$(document).ready(function() {
$.ajax({
type: "GET",
url: "banner_slider/settings.xml",
dataType: "xml",
success: startSlider
});
});
function startSlider(xml) {
var bWidth = $('#banner').width(), bHeight = $('#banner').height();
bWidth += 'px';
bHeight += 'px';
$('#banner').attr( 'style', 'height: '+bHeight );
$('#banner').attr( 'style', 'width: '+bWidth );
$('#banner img').attr( 'id', 'origImg');
appendImages( bWidth, bHeight, xml );
$('#origImg').remove();
$('#banner').cycle();
}
function appendImages( bWidth, bHeight, xml ) {
console.log('appendImages executed');
$(xml).find('img').each(function() {
var path = $(this).text();
console.log('path: '+path);
$('#banner').append('<img width="'+bWidth+'" height="'+bHeight+'" src="'+path+'" />');
});
}
示例XML:
<?xml version="1.0" encoding="utf-8" ?>
<images>
<img>test1</img>
<img>test2</img>
<img>test3</img>
</images>