简体   繁体   English

用于幻灯片放映的 Ajax 不起作用

[英]Ajax for slideshow not working

I don't seem to understand exactly how this works.我似乎不太明白这是如何工作的。 When I call the get ajax method shouldn't the index change and therefore the slide should change or am I not getting something about this.当我调用 get ajax 方法时,索引不应该改变,因此幻灯片应该改变,或者我没有得到任何关于这个的信息。

PHP/HTML PHP/HTML

echo "<div id='slider'>
        <ul class='slides'>

            <li class='slide'>
                <div class='pic'>
                    <img src= " . $dir . $pic_array[$index] . " />
                </div>
                <div class='caption'>
                    <p id='title'>$titles[$index]</p>
                    <p id='des'>$descriptions[$index]</p>
                </div>
                <div class='next'>
                    <i class='fa fa-arrow-right fa-2x'></i>
                </div>    
                <div class='previous'>
                    <i class='fa fa-arrow-left fa-2x'></i>
                </div>
           </li>";

echo     "</ul>  
      </div>


      </html>";

$conn->close();

?>

Javascript Javascript

$(function () {
    var arrPix = $('#json_pics').val();
    var arrPix = $.parseJSON( arrPix );


    var index = 0;

    var $slider = $('#slider');
    var $slides = $slider.find('.slides');
    var $slide = $slides.find('.slide');
    var $next = $slides.find('.next');
    var $previous = $slides.find('.previous');
    var $caption = $slides.find('.caption');

    var slide_length = $slide.length;

    $slider.hover(function() {
            $caption.css('opacity', '1');
            $next.css('opacity', '1');
            $previous.css('opacity', '1');
        }, function() {
            $caption.css('opacity', '0');
            $next.css('opacity', '0');
            $previous.css('opacity', '0');
        }
    );
    $next.click(function() {
        index++;
        $.get("gallery_.php?index=" + index);

    });
});

EDIT: Should I be using load instead?编辑:我应该使用负载吗?

In an endeavor to get you a solution that努力为您提供解决方案

  • Uses AJAX使用 AJAX
  • and uses PHP,并使用 PHP,

I would suggest something like the following.我会建议类似以下内容。

' getpic.php ' ' getpic.php '

Summary: (A new file... used to simplify the process of getting a new picture.)摘要:(一个新文件……用于简化获取新图片的过程。)

Description: Contains a function that generates the <img> tag and related info for the next image in your gallery.说明:包含一个函数,用于为您图库中的下一张图像生成<img>标签和相关信息。

$dir = /*whatever it is*/;
$pix_array = array("image1.jpg", "image2.png", "orWhateverElse.gif" /*etc.*/);
$descriptions = /*whatever they are*/;
$titles = /*whatever they're supposed to be*/;

function priWrap($index) {
    /*
    This handles the actual generating of the <img> tag as well as
    the caption and such.
    $index refers to a specific picture in $pix_array.
    */

    global $pix_array, $dir, $titles, $descriptions;

    $arr_len = count($pix_array);

    if ($index < 0) {
        $index = $arr_len-1;
        }
    else if { $index >= $arr_len) {
        $index = 0;
        }

    echo "<div class='pic'>
              <img src='" . $dir . $pic_array[$index] . "' data-ind='$index' />
          </div>
    <div class='caption'>
            <p id='title'>" . $titles[$index] . "</p>
            <p id='des'>" . $descriptions[$index] . "</p>
        </div>";
    }

#let's get it set up to handle AJAX calls
if (isset($_GET['index'])) {
    $index = intval($_GET['index']);
    priWrap($index);
    }

Changes to ' gallery_.php '更改为“ gallery_.php

The code you posted should now look like this:您发布的代码现在应如下所示:

require_once('getpic.php');

echo "<div id='slider'>
    <ul class='slides'>

        <li class='slide'>
            <div id='picWrapper'>";

echo priWrap($index) . "
            </div><!--End #picWrapper-->
            <div class='next'>
                <i class='fa fa-arrow-right fa-2x'></i>
            </div>    
            <div class='previous'>
                <i class='fa fa-arrow-left fa-2x'></i>
            </div>
       </li>";

echo "</ul>  
  </div>
  </body>
  </html>";

$conn->close();

?>

Your javascript needs changed, too.您的javascript需求也发生了变化。

var index = 0;

should be应该

var index = parseInt($(".pic img").attr("data-ind"));

and

$next.click(function() {
    index++;
    $.get("gallery_.php?index=" + index);

});

should be应该

$next.click(function() {
    index++;
    $("#picWrapper").load("getpic.php?index=" + index,
        /*Add callback so that index is updated properly.*/
        function () {
             //update our index
             index = parseInt($(".pic img").attr("data-ind"));
             //show our caption stuff...
             $(".caption").css('opacity', '1');
             }
        );

});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM