热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

脚本在本地主机而不是在服务器上工作。-Scriptworksinlocalhostbutnotonserver

IhavethisproblemwhereacodeisworkingonlocalhostbutnotwhenIuploadittotheserver.我有这

I have this problem where a code is working on localhost but not when I upload it to the server.

我有这样一个问题:代码在本地主机上工作,但当我将它上传到服务器时,就不存在了。

I want to implement this: Polaroid Photobar Gallery

我想要实现这个:宝丽来光栅画廊。

Here's a link to my website: Zodiac 2013

这里有一个链接到我的网站:Zodiac 2013。

Note: You need to go the gallery tab to view it.

注意:您需要到gallery选项卡查看它。

EDIT: Please view it in Google Chrome for best viewing experience.

编辑:请浏览谷歌浏览器以获得最佳观看体验。

I tried using FireBug but to no help. With the Inspect Element feature of google chrome, I figured out that the server didn't accept the Javascript code written inside the document. The code is kind of huge involving many files, here's the main one:

我试着使用FireBug,但没有帮助。通过对谷歌chrome的检查元素特性,我发现服务器不接受在文档中编写的Javascript代码。这段代码涉及很多文件,主要是:

THE HTML MARKUP

HTML标记

Polaroid Photobar Gallery

THE CSS

CSS

.pp_loading{
display:none;
position:fixed;
top:50%;
left:50%;
margin:-35px 0px 0px -35px;
background:#fff url(../images/icons/loader.gif) no-repeat center center;
width:70px;
height:70px;
z-index:999;
opacity:0.7;
-moz-border-radius:10px;
-webkit-border-radius:10px;
border-radius:10px;
}
.pp_next, .pp_prev{
cursor:pointer;
top:50%;
margin-top:-16px;
width:32px;
height:32px;
position:fixed;
text-align:center;
border:1px solid #111;
color:#fff;
-moz-box-shadow:0px 0px 3px #000;
-webkit-box-shadow:0px 0px 3px #000;
box-shadow:0px 0px 3px #000;
}
.pp_next{
right:-40px;
background:#222 url(../images/icons/next.png) no-repeat center center;
}
.pp_prev{
left:-40px;
background:#222 url(../images/icons/prev.png) no-repeat center center;
}
#pp_thumbContainer{
position:fixed;
bottom:0px;
left:0px;
height:65px;
width:100%;
}
#pp_thumbContainer .album{
position:absolute;
width:200px;
height:65px;
bottom:-90px;
}
.album .descr,
.pp_back{
position:absolute;
bottom:0px;
left:-16px;
background:#222;
text-align:center;
border:1px solid #111;
padding:5px;
cursor:pointer;
width:169px;
color:#fff;
cursor:pointer;
text-shadow:0px 0px 1px #fff;
-moz-box-shadow:1px 1px 4px #000;
-webkit-box-shadow:1px 1px 4px #000;
box-shadow:1px 1px 4px #000;
}
.pp_back{
text-transform:uppercase;
bottom:120px;
left:-100px;
width:80px;
}
#pp_thumbContainer .content{
position:absolute;
top:0px;
height:155px;
cursor:pointer;
}
#pp_thumbContainer img{
border:5px solid #fff;
-moz-box-shadow:1px 1px 7px #000;
-webkit-box-shadow:1px 1px 7px #000;
box-shadow:1px 1px 7px #000;
}
#pp_thumbContainer .content span{
display:none;
}
.pp_preview{
position:fixed;
top:150%;
left:50%;
}
.pp_preview img{
position:absolute;
top:0px;
left:0px;
border:10px solid #fff;
border-bottom:45px solid #fff;
-moz-box-shadow:1px 1px 7px #000;
-webkit-box-shadow:1px 1px 7px #000;
box-shadow:1px 1px 7px #000;
}
.pp_descr{
height:45px;
line-height:45px;
font-size:28px;
width:100%;
bottom:0px;
left:0px;
position:relative;
text-align:center;
color:#fff;
}
h1{
            font-size:50px;
            margin:50px;
            color:#333;
        }
        span.reference{
            font-family:Arial;
            position:fixed;
            right:10px;
            top:10px;
            font-size:15px;
        }
        span.reference a{
            color:#fff;
            text-transform:uppercase;
            text-decoration:none;
        }

The code above is included in an external file named style1.css. You can find it on my website. And, finally, THE Javascript:

上面的代码包含在名为style1.css的外部文件中。你可以在我的网站上找到。最后,Javascript:

 $(function() {
            var ie          = false;
            if ($.browser.msie) {
                ie = true;
            }
            //current album/image displayed 
            var enableshow  = true;
            var current     = -1;
            var album       = -1;
            //windows width
            var w_width     = $(window).width();
            //caching
            var $albums     = $('#pp_thumbContainer div.album');
            var $loader     = $('#pp_loading');
            var $next       = $('#pp_next');
            var $prev       = $('#pp_prev');
            var $images     = $('#pp_thumbContainer div.content img');
            var $back       = $('#pp_back');

            //we wnat to spread the albums through the page equally
            //number of spaces to divide with:number of albums plus 1
            var nmb_albums  = $albums.length;
            var spaces      = w_width/(nmb_albums+1);
            var cnt         = 0;
            //preload all the images (thumbs)
            var nmb_images  = $images.length;
            var loaded      = 0;
            $images.each(function(i){
                var $image = $(this);
                $('').load(function(){
                    ++loaded;
                    if(loaded == nmb_images){
                        //let's spread the albums equally on the bottom of the page
                        $albums.each(function(){
                            var $this   = $(this);
                            ++cnt;
                            var left    = spaces*cnt - $this.width()/2;
                            $this.css('left',left+'px');
                            $this.stop().animate({'bottom':'0px'},500);
                        }).unbind('click').bind('click',spreadPictures);
                        //also rotate each picture of an album with a random number of degrees
                        $images.each(function(){
                            var $this   = $(this);
                            var r       = Math.floor(Math.random()*41)-20;
                            $this.transform({'rotate'   : r + 'deg'});
                        });
                    }
                }).attr('src', $image.attr('src'));
            });

            function spreadPictures(){
                var $album  = $(this);
                //track which album is opened
                album       = $album.index();
                //hide all the other albums
                $albums.not($album).stop().animate({'bottom':'-90px'},300);
                $album.unbind('click');
                //now move the current album to the left 
                //and at the same time spread its images through 
                //the window, rotating them randomly. Also hide the description of the album

                //store the current left for the reverse operation
                $album.data('left',$album.css('left'))
                      .stop()
                      .animate({'left':'0px'},500).find('.descr').stop().animate({'bottom':'-30px'},200);
                var total_pic   = $album.find('.content').length;
                var cnt         = 0;
                //each picture
                $album.find('.content')
                      .each(function(){
                    var $cOntent= $(this);
                    ++cnt;
                    //window width
                    var w_width     = $(window).width();
                    var spaces      = w_width/(total_pic+1);
                    var left        = (spaces*cnt) - (140/2);
                    var r           = Math.floor(Math.random()*41)-20;
                    //var r = Math.floor(Math.random()*81)-40;
                    $content.stop().animate({'left':left+'px'},500,function(){
                        $(this).unbind('click')
                               .bind('click',showImage)
                               .unbind('mouseenter')
                               .bind('mouseenter',upImage)
                               .unbind('mouseleave')
                               .bind('mouseleave',downImage);
                    }).find('img')
                      .stop()
                      .animate({'rotate': r+'deg'},300);
                    $back.stop().animate({'left':'0px'},300);
                });
            }

            //back to albums
            //the current album gets its innitial left position
            //all the other albums slide up
            //the current image slides out
            $back.bind('click',function(){
                $back.stop().animate({'left':'-100px'},300);
                hideNavigation();
                //there's a picture being displayed
                //lets slide the current one up
                if(current != -1){
                    hideCurrentPicture();
                }

                var $current_album = $('#pp_thumbContainer div.album:nth-child('+parseInt(album+1)+')');
                $current_album.stop()
                              .animate({'left':$current_album.data('left')},500)
                              .find('.descr')
                              .stop()
                              .animate({'bottom':'0px'},500);

                $current_album.unbind('click')
                              .bind('click',spreadPictures);

                $current_album.find('.content')
                          .each(function(){
                            var $cOntent= $(this);
                            $content.unbind('mouseenter mouseleave click');
                            $content.stop().animate({'left':'0px'},500);
                            });

                $albums.not($current_album).stop().animate({'bottom':'0px'},500);
            });

            //displays an image (clicked thumb) in the center of the page
            //if nav is passed, then displays the next / previous one of the 
            //current album
            function showImage(nav){
                if(!enableshow) return;
                enableshow = false;
                if(nav == 1){
                    //reached the first one
                    if(current==0){
                        enableshow = true;
                        return;
                    }
                    var $cOntent= $('#pp_thumbContainer div.album:nth-child('+parseInt(album+1)+')')
                                              .find('.content:nth-child('+parseInt(current)+')');
                    //reached the last one
                    if($content.length==0){
                        enableshow = true;
                        current-=2;
                        return;
                    }   
                }
                else
                    var $cOntent= $(this);

                //show ajax loading image
                $loader.show();

                //there's a picture being displayed
                //lets slide the current one up
                if(current != -1){
                    hideCurrentPicture();
                }

                current                 = $content.index();
                var $thumb              = $content.find('img');
                var imgL_source         = $thumb.attr('alt');
                var imgL_description    = $thumb.next().html();
                //preload the large image to show
                $('').load(function(){
                    var $imgL   = $(this);
                    //resize the image based on the windows size
                    resize($imgL);
                    //create an element to include the large image
                    //and its description
                    var $preview = $('
',{ 'id' : 'pp_preview', 'className' : 'pp_preview', 'html' : '
'+imgL_description+'
', 'style' : 'visibility:hidden;' }); $preview.prepend($imgL); $('#pp_gallery').prepend($preview); var largeW = $imgL.width()+20; var largeH = $imgL.height()+10+45; //change the properties of the wrapping div //to fit the large image sizes $preview.css({ 'width' :largeW+'px', 'height' :largeH+'px', 'marginTop' :-largeH/2-20+'px', 'marginLeft' :-largeW/2+'px', 'visibility' :'visible' }); Cufon.replace('.pp_descr'); //show navigation showNavigation(); //hide the ajax image loading $loader.hide(); //slide up (also rotating) the large image var r = Math.floor(Math.random()*41)-20; if(ie) var param = { 'top':'50%' }; else var param = { 'top':'50%', 'rotate': r+'deg' }; $preview.stop().animate(param,500,function(){ enableshow = true; }); }).error(function(){ //error loading image. Maybe show a message : 'no preview available'? }).attr('src',imgL_source); } //click next image $next.bind('click',function(){ current+=2; showImage(1); }); //click previous image $prev.bind('click',function(){ showImage(1); }); //slides up the current picture function hideCurrentPicture(){ current = -1; var r = Math.floor(Math.random()*41)-20; if(ie) var param = { 'top':'-150%' }; else var param = { 'top':'-150%', 'rotate': r+'deg' }; $('#pp_preview').stop() .animate(param,500,function(){ $(this).remove(); }); } //shows the navigation buttons function showNavigation(){ $next.stop().animate({'right':'0px'},100); $prev.stop().animate({'left':'0px'},100); } //hides the navigation buttons function hideNavigation(){ $next.stop().animate({'right':'-40px'},300); $prev.stop().animate({'left':'-40px'},300); } //mouseenter event on each thumb function upImage(){ var $cOntent= $(this); $content.stop().animate({ 'marginTop' : '-70px' },400).find('img') .stop() .animate({'rotate': '0deg'},400); } //mouseleave event on each thumb function downImage(){ var $cOntent= $(this); var r = Math.floor(Math.random()*41)-20; $content.stop().animate({ 'marginTop' : '0px' },400).find('img').stop().animate({'rotate': r + 'deg'},400); } //resize function based on windows size function resize($image){ var widthMargin = 50 var heightMargin = 200; var windowH = $(window).height()-heightMargin; var windowW = $(window).width()-widthMargin; var theImage = new Image(); theImage.src = $image.attr("src"); var imgwidth = theImage.width; var imgheight = theImage.height; if((imgwidth > windowW)||(imgheight > windowH)){ if(imgwidth > imgheight){ var newwidth = windowW; var ratio = imgwidth / windowW; var newheight = imgheight / ratio; theImage.height = newheight; theImage.width= newwidth; if(newheight>windowH){ var newnewheight = windowH; var newratio = newheight/windowH; var newnewwidth =newwidth/newratio; theImage.width = newnewwidth; theImage.height= newnewheight; } } else{ var newheight = windowH; var ratio = imgheight / windowH; var newwidth = imgwidth / ratio; theImage.height = newheight; theImage.width= newwidth; if(newwidth>windowW){ var newnewwidth = windowW; var newratio = newwidth/windowW; var newnewheight =newheight/newratio; theImage.height = newnewheight; theImage.width= newnewwidth; } } } $image.css({'width':theImage.width+'px','height':theImage.height+'px'}); } });

The Javascript above is the code that written in the body section, and which the browser refuses to load, since, it is an internal code, FireBug doesn't help. I've used the following lines to include the necessary js files (in the head section):

上面的Javascript代码是写在body部分的代码,而浏览器拒绝加载,因为它是一个内部代码,FireBug没有帮助。我使用了以下几行来包含必要的js文件(在head部分):


And this in the body section before writing the Javascript code:

在编写Javascript代码之前,在body部分中:


The gallery seems to work perfectly when run on xampp server, but not when I upload it to the web server. Please help me!

当在xampp服务器上运行时,这个库似乎运行得很好,但是当我把它上传到web服务器上时,它就没有效果了。请帮助我!

Note: I've verified that all the files have been uploaded successfully onto my web server. I'm new to this site, so please pardon me for any mistakes and help me rectify them.

注意:我已经确认所有文件都已成功上传至我的web服务器。我是这个网站的新手,所以请原谅我的错误,帮我改正。

EDIT: The google chrome console shows me many 404s for the images, saying that they don't exist, while they do. I've checked the permissions of the folders too, and everything is fine, guess this is the main problem. Please help me here.

编辑:谷歌的chrome控制台给我看了很多404s的图片,说它们不存在,而它们确实存在。我也检查了文件夹的权限,一切都很好,这是主要问题。请帮我在这里。

1 个解决方案

#1


2  

seems like that the file system is case sensitive on the server, bug insensitive on your local machine.

看起来文件系统在服务器上是大小写敏感的,bug在本地机器上是不敏感的。

all images with suffix in lower case (*.jpg) could be loaded sucessfully, but upper ones (*.JPG) failed (404 not found). as your code always try to get the image with lower case

在小写(*.jpg)中添加后缀的所有图像都可以被成功加载,但是上面的图片(*.jpg)失败了(404没有找到)。因为你的代码总是试图用小写字母来获取图像。

on your website:

在你的网站上:

enter image description here enter image description here

It should be:

应该是:

enter image description here


推荐阅读
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 深入解析 Lifecycle 的实现原理
    本文将详细介绍 Android Jetpack 中 Lifecycle 组件的实现原理,帮助开发者更好地理解和使用 Lifecycle,避免常见的内存泄漏问题。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
  • V8不仅是一款著名的八缸发动机,广泛应用于道奇Charger、宾利Continental GT和BossHoss摩托车中。自2008年以来,作为Chromium项目的一部分,V8 JavaScript引擎在性能优化和技术创新方面取得了显著进展。该引擎通过先进的编译技术和高效的垃圾回收机制,显著提升了JavaScript的执行效率,为现代Web应用提供了强大的支持。持续的优化和创新使得V8在处理复杂计算和大规模数据时表现更加出色,成为众多开发者和企业的首选。 ... [详细]
  • C++ 开发实战:实用技巧与经验分享
    C++ 开发实战:实用技巧与经验分享 ... [详细]
  • 本文探讨了如何利用 jQuery 的 JSONP 技术实现跨域调用外部 Web 服务。通过详细解析 JSONP 的工作原理及其在 jQuery 中的应用,本文提供了实用的代码示例和最佳实践,帮助开发者解决跨域请求中的常见问题。 ... [详细]
  • TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得
    TypeScript 实战分享:Google 工程师深度解析 TypeScript 开发经验与心得 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 在多线程并发环境中,普通变量的操作往往是线程不安全的。本文通过一个简单的例子,展示了如何使用 AtomicInteger 类及其核心的 CAS 无锁算法来保证线程安全。 ... [详细]
  • 本文对比了杜甫《喜晴》的两种英文翻译版本:a. Pleased with Sunny Weather 和 b. Rejoicing in Clearing Weather。a 版由 alexcwlin 翻译并经 Adam Lam 编辑,b 版则由哈佛大学的宇文所安教授 (Prof. Stephen Owen) 翻译。 ... [详细]
  • 基于Web的Kafka管理工具Kafkamanager首次访问Web界面的详细配置指南(附图解)
    首次访问Kafkamanager Web界面时,需要对Kafka集群进行配置。这一过程相对简单,用户只需依次点击【Cluster】>【Add Cluster】,按照提示完成相关设置即可。本文将通过图文并茂的方式,详细介绍每一步的配置步骤,帮助用户快速上手Kafkamanager。 ... [详细]
  • 字节码开发笔记:深入解析与应用技巧 ... [详细]
author-avatar
情若自已_650
这个家伙很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有