在JQUERY中通过AJAX从PHP创建关联数组

时间:2012-08-13 01:37:10

标签: php jquery ajax

我在这里第一次呼救。 不确定我的标题是否正确明确,但这是我现在唯一可以提出的标题。我已经在这里待了2天了,我已经阅读了很多不同的东西,我认为我对此感到非常困惑。我会尽量保持精确。 这是我的问题,

首先,这是我基于此的jQuery代码:

$thumbnails.find( 'a' ).each( function() {
        pictures.push({
            src: $( this ).attr( 'href' ),    
            title: $( this ).find( 'img' ).attr( 'title' ),
            valign: $( this ).find( 'img' ).data( 'valign' )
        });
    })

你注意到那里的 pictures.push 。 现在,这就是,

$.vegas( 'slideshow', { 
        backgrounds: pictures,
        delay: 4000,
        fade:5000
     })( 'overlay' );

请注意背景属性如何使用图片来获取所需的图片名称。我现在不确定如何拨打图片。它是一个关联数组还是一个对象?

无论如何,我不想从HTML节点获取图像的文件名。我使用PHP在服务器上的目录中获取文件名,并生成带有这些文件名的XML文档。 这是在我的PHP脚本中生成XML文档的部分(我只需要5个图像)

header("Content-type: text/xml");
    echo '<?xml version="1.0"?>';
    echo "<img>";
    for($i=0;$i<5;$i++){ 
        echo "<src>img/" . $rep_aleatoire[$i] . "/" . $img_aleatoire[$i] . "</src>";
        echo "<title>" . $img_aleatoire[$i] . "</title>";
    }
    echo "</img>";

这就是XML文档的样子,

<img>
<src>img/portraits/DSC_0161.jpg</src>
<title>DSC_0161.jpg</title>
<src>img/nature/DSC_0019 copy-tych 3.jpg</src>
<title>DSC_0019 copy-tych 3.jpg</title>
<src>img/portraits/DSC_0157.jpg</src>
<title>DSC_0157.jpg</title>
<src>img/editions/DSC_0053.jpg</src>
<title>DSC_0053.jpg</title>
<src>img/editions/DSC_Ant.jpg</src>
<title>DSC_Ant.jpg</title>
</img>

这是我用来获取XML数据的JQUERY部分,

$.get("main.php", function(data){
        var rep = new Array;
        var file = new Array;
        $(data).find("img").each(function(){
            $(this).find('src').each(function(i){
                rep[i] = $(this).text();
            });
            $(this).find('title').each(function(i){
                file[i] = $(this).text();
            });;
            for(i=0;i<rep.length;i++){
                pictures.push({
                    src: $(rep[i]),    
                    title: $(file[i])
                });
            }
         });
});

图片已初始化超出此功能的范围,因此它应该可以在我需要的任何地方使用,但事实并非如此。如果我尝试在该函数之外访问它,它是空的。 此外,当在该函数的范围内时,它包含的所有内容都是对象。我甚至不知道我是否以正确的方式这样做。我已经尝试了许多我甚至不记得的方法。我无法获得XML文档中生成的实际数据。

我当然希望我已经足够清楚,你们明白我的意思。 我只想生成图片的正确格式,以便在 $ vegas 函数中使用。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

首先。始终声明您的变量。

错误的声明:

var rep = new Array;
var file = new Array;

应该是

var rep = new Array();
var file = new Array();

甚至更好:

var rep = [];
var file = [];

声明您在最后一个循环中使用的i

for(var i=0;i<rep.length;i++){
...

甚至更好:

var i;
for(var i=0;i<rep.length;i++){
..

完成后,您会注意到您尝试按数组值访问jquery对象。

pictures.push({
  src: $(rep[i]),    
  title: $(file[i])
});

你可能意味着:

pictures.push({
  src: rep[i],
  title: rep[i]
});

当然,请确保var pictures适用于您使用它的所有范围。