在 JQUERY 中创建从 PHP 到 AJAX 的关联数组


Creating an associative array from PHP through AJAX in JQUERY

我在这里第一次呼救。不确定我的标题是否正确明确,但这是我现在唯一能想到的标题。我已经在这里呆了 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' )
        });
    })

你注意到图片,推到那里。现在,这和,

$.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功能中使用。

任何帮助将不胜感激。

首先。始终声明变量。

错误的声明:

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在您使用它的所有范围内都可用。