2010-08-02 47 views
0

中的數據我試圖使用jQuery發送ajax請求到一個非常簡單的PHP腳本來爲jQuery循環插件加載圖像。我遇到了從我的json對象獲取圖像源字符串的問題。我會告訴我的代碼,然後進入下面詳細:動態創建json索引不會讓我訪問

<!doctype html> 
<html lang="en-us"> 
    <head> 
     <title>jQuery Cycle test</title> 
     <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
     <script type="text/javascript" src="js/jquery.cycle.all.min.js"></script> 
     <style> 
      #slideshow a { margin: 0; padding: 0; color: #fff; } 
     </style> 
    </head> 

    <body> 
     <div id="slideshow"> 
     </div> 
    </body> 

    <script type="text/javascript"> 
     $.get('slideshow.php', {start : "true"}, function(data){ 
      var images = JSON.parse(data); 
      for(var i = 1; i < 6; ++i){ 
       var index = 'image' + i; alert(index); alert(images.index); 
       $('#slideshow').innerHTML += '<a href="images/' + images.index + '"><img src="images/' + images.index + '" alt="" /></a>'; 
      } 
     }); 

     $('#slideshow').cycle({ 
      fx: 'cover', 
      direction: 'right', 
      timeout: 3000, 
      speed: 300 
     }); 
    </script> 

</html> 

我的PHP腳本返回json_encoded關聯數組,成爲編碼後的正常JSON對象。對於我的測試,我有五個圖像我試圖加載:image1 - image5。正如你在JavaScript中看到的,我試圖通過將'i'的值附加到字符串'image'來動態創建一個新的索引/屬性名稱來訪問這些單獨的圖像源字符串。一切都很簡單。

我的問題是,當我用這種方式創建我的屬性名稱時,它返回'undefined'。當我手動嘗試它時,通過編寫諸如images.image3之類的東西,它會返回適當的源字符串。

我已經提醒了我的動態索引(正如你所看到的),它們看起來對我來說是合適的。我不認爲這是一個關閉問題,因爲它會在這種情況下返回最後一個圖像字符串。我非常難以忍受,所以任何建議都將不勝感激。

+0

你說 「返回 '未定義'」。你能更具體地瞭解什麼,何時何地? – 2010-08-02 21:52:57

+0

我for循環中的第二個提醒。第一個警報正確輸出'imagei',其中i是循環的索引。第二次警報輸出未定義5次。 – 2010-08-02 22:58:44

回答

0

我想通了。使用數組符號而不是點符號做了訣竅。我認爲腳本試圖將屬性名稱視爲數字而不是字符串,因此數組表示法是正確的。從那裏,這是一個簡單的問題,擠壓其他一些小的錯誤。

解決辦法:

<!doctype html> 
<html lang="en-us"> 
    <head> 
     <title>jQuery Cycle test</title> 
     <script type="text/javascript" src="js/jquery-1.4.2.min.js"></script> 
     <script type="text/javascript" src="js/jquery.cycle.all.min.js"></script> 
     <style> 
      #slideshow a { margin: 0; padding: 0; color: #fff; } 
     </style> 
    </head> 

    <body> 
     <div id="slideshow"> 
     </div> 
    </body> 

    <script type="text/javascript"> 
     $.get('slideshow.php', {start : "true"}, function(data){ 
      var images = JSON.parse(data); 
      for(var i = 0; i < 5; ++i){ 
       $('#slideshow').append('<a href="images/' + images['image' + i] + '"><img src="images/' + images['image' + i] + '" alt="" /></a>'); 
      } 

       $('#slideshow').cycle({ 
        fx: 'cover', 
        direction: 'right', 
        timeout: 3000, 
        speed: 300 
       }); 
     }); 
    </script> 

</html> 
1

是否有可能你的JSON有一個由五個元素組成的零索引數組,當你的單索引循環達到最後一次迭代時,image5是不確定的?

+0

看起來不是問題。我只是清零了PHP函數返回的數組和相應的JavaScript循環。 – 2010-08-02 22:59:39