2

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>
4

3 に答える 3

1

これを試してください。応答を成功ハンドラーに渡す必要があります。コードを変更して設定を削除しましたが、設定を追加して、.parseXMLjqueryの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)
 });
});

DMEO

于 2012-11-16T19:14:41.200 に答える
0

ajaxコールバックから関数にデータを適切に渡す必要があると思います。

  success: function(data, textStatus, jqXHR) {
        startSlider(data);
   }

JSFIDDLEでこのデモをチェックしてください

于 2012-11-16T19:04:24.877 に答える