首先,我对jQuery和PHP都不太熟悉,所以如果这是一个愚蠢的问题而我在互联网上搜索后仍然无法弄清楚哪里出了问题,我很抱歉。此外,如果您看到其他错误/混乱的代码等,请告诉我:)。
我正在尝试创建一个画廊,其中有一个上一个和下一个按钮。当单击“上一个”时,通过jquery更改img标记的src属性以显示上一个图像,并通过单击“下一个”来更改为下一个图像。但是,当单击上一个按钮且当前图像是第一个图像时,我希望它返回到最后一个图像。由于我有几个具有不同总图片数量的这些库,我需要动态执行此操作。现在,我的当前方法大致如下:
1.从单击的按钮向我的图像切换函数发送方向参数(“backward”或“forward”) 2.提取图像源文件路径并将其发布到外部PHP脚本,然后计算该目录中的文件数。 3.检查方向参数是否向前。如果是,则将当前图像文件名末尾的数字加1。否则,减去1(导致不存在的文件名)。将此新文件名分配给nextImage变量。 4.检查nextImage是否存在。如果是,则将其分配为img src属性的值。如果没有,则从外部PHP脚本获取文件计数,将其作为文件编号实现到nextImage中,然后将其分配给src属性。
大部分都可以正常工作。但是,在单击第一个图像上的“上一个”时获取最后一个图像似乎不起作用。我进行了一些调试,并将其缩小到似乎停止工作的点。Firebug告诉我jQuery POST函数起作用(我也得到了成功的警报)并且它将我想要的数据发布到PHP文件中。但是,在PHP脚本内部,从未进入
以下是jQuery代码:
我正在尝试创建一个画廊,其中有一个上一个和下一个按钮。当单击“上一个”时,通过jquery更改img标记的src属性以显示上一个图像,并通过单击“下一个”来更改为下一个图像。但是,当单击上一个按钮且当前图像是第一个图像时,我希望它返回到最后一个图像。由于我有几个具有不同总图片数量的这些库,我需要动态执行此操作。现在,我的当前方法大致如下:
1.从单击的按钮向我的图像切换函数发送方向参数(“backward”或“forward”) 2.提取图像源文件路径并将其发布到外部PHP脚本,然后计算该目录中的文件数。 3.检查方向参数是否向前。如果是,则将当前图像文件名末尾的数字加1。否则,减去1(导致不存在的文件名)。将此新文件名分配给nextImage变量。 4.检查nextImage是否存在。如果是,则将其分配为img src属性的值。如果没有,则从外部PHP脚本获取文件计数,将其作为文件编号实现到nextImage中,然后将其分配给src属性。
大部分都可以正常工作。但是,在单击第一个图像上的“上一个”时获取最后一个图像似乎不起作用。我进行了一些调试,并将其缩小到似乎停止工作的点。Firebug告诉我jQuery POST函数起作用(我也得到了成功的警报)并且它将我想要的数据发布到PHP文件中。但是,在PHP脚本内部,从未进入
if(isset($ _POST [“id1”]))
分支。即使我基本上从此网站上接受的答案中复制和粘贴了整个脚本,它仍然直接进入else分支。以下是jQuery代码:
var nextImageLength = " ";
var nextImage = " ";
var imageString = " ";
var nextImageStr = " ";
var nextImageNmb = 0;
var countImageLength = function($countimagelength) {
nextImageLength = nextImageStr.length;
if (nextImageLength < 3) {
if (nextImageLength < 2) {
nextImage = imageString + '00' + nextImageStr + '.jpg';
}
else {
nextImage = imageString + '0' + nextImageStr + '.jpg';
}
}
else {
nextImage = imageString + nextImageStr + '.jpg';
}
}
function multiPageToggle(direction) {
var currentImage = $(".viewport_img_high").attr("src");
imageString = currentImage.slice( 0, 35 );
$.ajax(
{
type: "POST",
url: "countImages.php",
data: { id1: imageString},
success: function (count) {
//alert('success');
}
});
var currentImageNmb = currentImage.slice(-7, -4);
if (direction == "forward") {
nextImageNmb = (parseInt(currentImageNmb)) + 1;
}
else {
nextImageNmb = (parseInt(currentImageNmb)) - 1;
}
nextImageStr = nextImageNmb.toString();
countImageLength();
$.get(nextImage)
.done(function() {
$(".viewport_img_high").attr("src", nextImage);
}).fail(function() {
if (nextImageNmb < 1) {
$.get('countImages.php', function(count) {
nextImageStr = count;
});
countImageLength();
$(".viewport_img_high").attr("src", nextImage);
}
else {
nextImageStr = "1";
countImageLength();
$(".viewport_img_high").attr("src", nextImage);
}
});
}
这是我的PHP脚本:
<?php
if (isset($_POST["id1"]))
{
$imgStr = $id1;
}
else
{
$imgStr = "1";
echo "Oops. Something went really wrong here.";
}
$imagePath = "c:/xampp/htdocs/portfolio/images2/" + $imgStr + "/";
$count = iterator_count(new DirectoryIterator($imagePath));
echo $count;
?>
编辑:我将在下面添加一些Firebug数据。也许这可以帮助理解。
响应头:
Connection Keep-Alive
Content-Length 77
Content-Type text/html
Date Tue, 15 Jul 2014 04:26:24 GMT
Keep-Alive timeout=5, max=100
Server Apache/2.4.7 (Win32) OpenSSL/1.0.1e PHP/5.5.9
X-Powered-By PHP/5.5.9
请求头:
Accept */*
Accept-Encoding gzip, deflate
Accept-Language de,en-US;q=0.7,en;q=0.3
Cache-Control no-cache
Connection keep-alive
Content-Length 43
Content-Type application/x-www-form-urlencoded; charset=UTF-8
Host localhost
Pragma no-cache
Referer http://localhost/portfolio/index_b.php
User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0
X-Requested-With XMLHttpRequest
响应:
array(1) {
["id1"]=>
string(35) "images2/des004_large_/des004_large_"
}
0
$id1
但从未设置它。你是不是想要写成$imgStr = $_POST["id1"];
? - Barmar