首先,我是一個jQuery noob和一個完整的PHP noob,所以我很抱歉,如果這是一個愚蠢的問題(儘管我已經搜索了互聯網,具體來說,這網站上下無法弄清楚我做錯了什麼)。此外,如果你看到任何其他錯誤/雜亂的代碼等,不要猶豫,告訴我:)。PHP腳本不會收到jQuery POST
我想創建一個畫廊,我有一個上一個和下一個按鈕。當你點擊previous時,img-tag的src-attribute會通過jquery更改爲上一張圖像,下一張圖像和下一張圖像也會相同。但是,當您按下上一個按鈕並且當前圖像是第一個圖像時,我希望它返回到最後一個圖像。我需要這種動態發生,因爲我有幾個這些畫廊的圖片總數不同。現在,我的當前方法是(大約):
從點擊的按鈕發送方向參數到我的圖像肘節 功能(或是「向後」或「向前」)
提取圖像源的文件路徑並將其發佈到外部的 PHP腳本,然後對該目錄中的文件數進行計數。
檢查方向參數是否爲正向。如果是,則 將當前圖像文件名 末尾的數字加1。如果不是,則減去一個(導致名稱不存在的文件 )。這個新的文件名被分配給nextImage變量。
檢查nextImage是否存在。如果是,則將其分配爲img src-attribute的 。如果沒有,請從外部 PHP腳本中獲取文件計數,將其作爲文件編號並將其實施到nextImage中,然後將其分配到src-attribute中,然後將其分配給 。
大部分工作原理。但是,在第一張圖像上點擊上一張圖像時獲取最後一張圖像不會。我已經做了一些調試,並縮小到它似乎停止工作的程度。 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
在你的PHP腳本,你使用'$ id1'但從來沒有設置。你的意思是'$ imgStr = $ _POST [「id1」];'? – Barmar