我有一个带有以下js函数的index.php:
function returnImageString() {
return "<?php include 'inc/image.functions.php'; echo getRandomImages(7); ?>"; //This isn't dynamic; this will always return the same images. How do I fix this?
}
Run Code Online (Sandbox Code Playgroud)
但是,当页面加载时,调用php脚本并将结果添加到源代码中,如下所示:
function returnImageString() {
return "images/20.11.A1B9.jpg|images/8.14.47683.jpg|images/19.10.FBB9.jpg|images/21.12.9A.jpg|images/8.11.1474937909.jpg|images/8.15.99404.jpg|images/8.10.jpg|"; //This isn't dynamic; this will always return the same images. How do I fix this?
}
Run Code Online (Sandbox Code Playgroud)
我想要发生的是每当我调用js函数(returnImageString)时,我希望它每次调用php函数(因为php函数返回一串随机图像位置),而不是在js函数中对字符串进行硬编码.
有人能指出我正确的方向吗?谢谢!
好的,所以标题可能不能很好地解释我的问题.希望这是有道理的.这也是我用jQuery的第一个应用程序,所以请原谅我,如果我做的事情是愚蠢的.
我有以下功能:
function getRandomImages(limit) {
imagesArray = new Array();
$.getJSON('createImageArray.php', {limit: limit}, function(data) {
$.each(data, function(i) {
imagesArray[i] = data[i]; //imagesArray is declared globally.
});
});
}
Run Code Online (Sandbox Code Playgroud)
getJSON正确地抓取JSON对象.它返回如下内容:
{"image0":"images/19.10.FBB9.jpg","image1":"images/8.16.94070.jpg","image2":"images/8.14.47683.jpg","image3":"images/8.15.99404.jpg","image4":"images/8.13.20680.jpg","image5":"images/21.12.9A.jpg","image6":"images/8.17.75303.jpg"}
Run Code Online (Sandbox Code Playgroud)
我正在调试并确信data [i]正确包含从JSON对象中获取的图像路径.但是,在调用getRandomImages()之后,我会查看我的全局imagesArray并注意到没有任何更改.我猜它正在创建imagesArray的副本,而不是抓住实际的.
有人可以告诉我我需要做什么,以便我的全局imagesArray在$ .each块中更新?我是否需要以某种方式通过引用传递imagesArray?对不起,我有点迷路了.
谢谢您的帮助.
编辑:一些背景信息.我正在从DB填充一组随机图像位置.我不想一次将db中的所有图像加载到一个数组中,因为它太多了.所以,我有一个计数器,可以跟踪我在图像数组中的位置.完成图像后,我将指针移动到下一个图像.如果我到达终点,我需要抓取更多随机图像.这就是调用上面的js函数的地方; 它调用createImageArray.php,它从db中抓取x个随机图像并返回一个数组.然后我想将这些图像位置存储在我的全局imagesArray中.
我不确定如何重构我的代码以考虑.getJSON的asynchronouos性质.