微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP脚本未收到jQuery POST

首先,我有点像jQuery noob和整个PHP noob,所以如果这是一个愚蠢的问题,我感到很抱歉(尽管我已经搜索了Internet,尤其是这个网站的上下无法弄清我的意思.错了).另外,如果您看到任何其他错误/混乱的代码等,请不要犹豫告诉我:).

我正在尝试创建一个具有上一个和下一个按钮的画廊.当您单击上一个时,img标签的src属性通过jquery更改为上一个图像,并且与下一个buton和下一个图像相同.但是,当您按上一个按钮并且当前图像是第一张图像时,我希望它返回到最后一张图像.我需要动态地进行此操作,因为其中有几个画廊的图片总数不同.现在,我当前的方法是(大致):

>将方向参数从单击的按钮发送到我的图像切换
功能(“向后”或“向前”)
>提取图像源的文件路径并将其发布到外部
PHP脚本然后计算其中的文件
目录.
>检查方向参数是否为正.如是,
在当前图像文件名的末尾增加数字
一个.如果不是,则减去一个(导致不存在的文件
名称).这个新文件名被分配给nextimage变量.
>检查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

解决方法:

该行:

$imgStr = $id1;

应该:

$imgStr = $_POST['id1'];

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐