JavaScript causing Cannot modify header information Errors in PHP [duplicate]
I have a PHP page that works a treat, it also has some JavaScript at the top, i between the HEAD tags. My PHP uses the "header("location: /");" code to redirect users back to index.php at random points. I have narrowed down my cannot modify header information errors to this one piece of javascript, if i take it out it works fine, when i put it back it fails.
I know the error is caused by html being output before something else.. but i have no idea how to even read or understand JavaScript. could someone point me to what i can or should change?
<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(){
开发者_Python百科 $('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>
You cannot have header('Location: /');
anywhere in between. It should be sent before any output.
Read the it here : http://php.net/manual/en/function.header.php
If you want to redirect users afterwards, use HTML redirect.
something like this: <meta http-equiv="Refresh" content="5;url=http://www.abc.com" />
If I do understand your question, this has nothing to do with the jQuery code you have put in.
You can't have any HTML before calling header("Location ...
Even spaces will break it, your PHP tag should be the first character in your file if you want to use the header location command eg
---------
<?php
//your header location code
?>
---------
Anything between the dotted lines which represents your file and your PHP tags will break header location.
Like other's have said, it's not the jquery code itself. There's content outside of <?php ?>
tags, before your header()
call that you need to get rid of. If you cannot rework your code to fix this, have a look ar output buffering. That will allow you to output content and still issue a header()
call afterwards.
精彩评论