JavaScript导致无法修改PHP中的标头信息错误

时间:2011-01-20 05:39:30

标签: php javascript header

我有一个PHP页面,它在顶部有一些JavaScript,我在HEAD标签之间。我的PHP使用“header(”location:/“);”用于将用户重定向到随机点的index.php的代码。我已经缩小了我不能修改头信息错误到这一段javascript,如果我把它拿出来它工作正常,当我把它放回去失败。

我知道错误是由html在其他东西之前输出引起的..但我不知道如何阅读或理解JavaScript。有人能指出我能做什么或应该改变什么?

<script type="text/javascript">
    $(document).ready(function(){
    //jCarousel Plugin
    $('#carousel').jcarousel({
        vertical: true,
        scroll: 1,
        auto: 2,
        wrap: 'last',
        initCallback: mycarousel_initCallback
    });
    //Front page Carousel - Initial Setup
    $('div#slideshow-carousel a img').css({'opacity': '0.5'});
    $('div#slideshow-carousel a img:first').css({'opacity': '1.0'});
    $('div#slideshow-carousel li a:first').append('<span class="arrow"></span>')
    //Combine jCarousel with Image Display
    $('div#slideshow-carousel li a').hover(
        function(){
            if (!$(this).has('span').length){
                $('div#slideshow-carousel li a img').stop(true, true).css({'opacity': '0.5'});
                $(this).stop(true, true).children('img').css({'opacity': '1.0'});
            }   
        },
        function(){
            $('div#slideshow-carousel li a img').stop(true, true).css({'opacity': '0.5'});
            $('div#slideshow-carousel li a').each(function(){
                if ($(this).has('span').length) $(this).children('img').css({'opacity': '1.0'});
            });
        }
    ).click(function(){
        $('span.arrow').remove();        
        $(this).append('<span class="arrow"></span>');
        $('div#slideshow-main li').removeClass('active');        
        $('div#slideshow-main li.' + $(this).attr('rel')).addClass('active');   
        return false;
    });
});
//Carousel Tweaking
function mycarousel_initCallback(carousel){
    // Pause autoscrolling if the user moves with the cursor over the clip.
    carousel.clip.hover(function(){
        carousel.stopAuto();
    }, function(){
        carousel.startAuto();
    });
}
</script>

3 个答案:

答案 0 :(得分:1)

您之间不能有header('Location: /');。它应该在任何输出之前发送。

在此处阅读:http://php.net/manual/en/function.header.php

如果您想在之后重定向用户,请使用HTML重定向。

类似这样的事:<meta http-equiv="Refresh" content="5;url=http://www.abc.com" />

如果我理解你的问题,这与你放入的jQuery代码无关。

答案 1 :(得分:1)

在调用标题之前,您不能拥有任何HTML(“位置...

即使空格会破坏它,如果你想使用标题位置命令,你的PHP标记应该是文件中的第一个字符,例如

---------
<?php
  //your header location code
?>
---------

代表您的文件的虚线和PHP标记之间的任何内容都会破坏标题位置。

答案 2 :(得分:1)

就像其他人所说的那样,它不是jquery代码本身。在<?php ?>调用之前,您需要摆脱header()个标记之外的内容。如果您无法修改代码来解决此问题,请查看ar output buffering。这样您就可以输出内容,然后仍然会发出header()来电。