Foros del Web » Programando para Internet » Javascript »

<nav> -> ajax -> <main>

Estas en el tema de <nav> -> ajax -> <main> en el foro de Javascript en Foros del Web. Hola, me gustaría implementar la navegación ajax, de tal manera que pueda tener un video en reproducción en el <header> mientras el usuario salta a ...
  #1 (permalink)  
Antiguo 09/08/2014, 13:36
 
Fecha de Ingreso: enero-2008
Mensajes: 580
Antigüedad: 16 años, 3 meses
Puntos: 9
<nav> -> ajax -> <main>

Hola, me gustaría implementar la navegación ajax, de tal manera que pueda tener un video en reproducción en el <header> mientras el usuario salta a otra página, al cambiar de página esta no se cargara completamente, en su defecto me gustaría reemplazar el contenido de la etiqueta <main> por el contenido de la etiqueta <main> de la nueva pagina elegida, a la vez que se actualiza la barra de direcciones con el enlace elegido por el usuario para que parezca que realmente ha cambiado la pagina entera, gracias

lo he intentado con los siguientes archivos que son parte de mi front-controller, pero al probarlo, hace algo estraño, carga la pagina entera y mientras empieza a reproducir el video sigue reproduciendo el video de la anterior pagina cargada

.htaccess
Código:
#RewriteEngine on
#RewriteCond $1 !^(index\.php|favicon.ico|robots\.txt)
#RewriteRule ^(.*)$ index.php?/$1 [L]

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 

RewriteRule ^(.+)$ index.php?$1 [QSA,L]

AddDefaultCharset utf-8
index.php
Código PHP:
<?php
    ini_set
('display_errors'1);
    
header('Content-Type: text/html; charset=UTF-8');

    
define('DS'DIRECTORY_SEPARATOR);
    
define('ROOT'realpath(dirname(__FILE__)).DS);
    
define('BASE_URL'"//$_SERVER[HTTP_HOST]/fc/");
    
    
define('DB_HOST''localhost');
    
define('DB_USER''root');
    
define('DB_PASS''');
    
define('DB_NAME''');
    
define('DB_CHAR''utf8');

    
$argumentos array_values(array_filter(explode('/'$_SERVER['QUERY_STRING'])));
    
$controlador = ($controlador array_shift($argumentos))?$controlador:'index';
    
$metodo basename(($metodo array_shift($argumentos))?$metodo:'index','.html');
    
    foreach(
glob('./controladores/'.'*.php') as $archivo1) {
        foreach(
glob('./vistas/'.basename($archivo1,'.php').'/'.'*.phtml') as $archivo2) {
            if (
in_array(basename($archivo2,'.phtml'), array('borrar','crear','editar'))) {
                
$ediciones[basename($archivo1,'.php')][basename($archivo2,'.phtml')] = basename($archivo2,'.phtml').'.html';
            } else {
                
$vistas[basename($archivo1,'.php')][basename($archivo2,'.phtml')] = (basename($archivo2,'.phtml')<>'index')?basename($archivo2,'.phtml').'.html':null;
            }
        }
    }
    unset(
$vistas['index']);
    
    echo 
'<br><br><br>';
    
$index=array(
        
'nombre'=>'ANHIDA',
        
'lema'=>'Asociación de Niños con Hiperactividad y/o Déficit de Atención',
    );

    include 
ROOT.'plantillas/plantilla/index.phtml';
?>
plantillas/plantilla/index.phtml
Código PHP:
<!DOCTYPE html>
<html lang="es-ES">
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title><?=ucfirst($index['nombre'])?></title>
        <link href="//netdna.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css" rel="stylesheet">
        <link rel="stylesheet" href="//bootswatch.com/slate/bootstrap.min.css">
    </head>
    <body>
        <nav class="navbar navbar-default navbar-fixed-top" role="navigation">
            <div class="container-fluid">
                <!-- Brand and toggle get grouped for better mobile display -->
                <div class="navbar-header">
                    <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
                        <span class="sr-only">Toggle navigation</span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                        <span class="icon-bar"></span>
                    </button>
                    <a class="navbar-brand" href="<?=BASE_URL?>"><?=ucfirst($index['nombre'])?></a>
                </div>
            
                <!-- Collect the nav links, forms, and other content for toggling -->
                <div class="collapse navbar-collapse navbar-ex1-collapse">
                    <ul class="nav navbar-nav">
                        <li class="<?=$controlador=='index'?'active':null?>"><a href="<?=BASE_URL?>">Portada</a></li>
                        <?php foreach ($vistas as $llave1 => $archivo1): ?>
                            <?php if (count($vistas[$llave1]) == 1): ?>
                                <?php foreach ($archivo1 as $llave2 => $archivo2): ?>
                                    <li class="<?=($controlador==$llave1)?'active':null?>"><a href="<?=BASE_URL?><?=$llave1?>/<?=$archivo2?>"><?=ucfirst($llave1)?></a></li>
                                <?php endforeach ?>
                            <?php else: ?>                
                                <li class="<?=($controlador==$llave1)?'active':null?>" class="dropdown">
                                    <a href="#" class="dropdown-toggle" data-toggle="dropdown"><?=ucfirst($llave1)?> <b class="caret"></b></a>
                                    <ul class="dropdown-menu">
                                        <?php foreach ($archivo1 as $llave2 => $archivo2): ?>
                                            <li class="<?=($controlador==$llave1&&$metodo==$llave2)?'active':null?>"><a href="<?=BASE_URL.$llave1.DS.$archivo2?>"><?=ucfirst($llave2)?></a></li>
                                        <?php endforeach ?>
                                    </ul>
                                </li>
                            <?php endif ?>
                        <?php endforeach ?>
                    </ul>
                    <ul class="nav navbar-nav navbar-right">
                        <?php if (isset($ediciones[$controlador])): ?>
                            <?php foreach ($ediciones[$controlador] as $llave => $edicion): ?>
                                <li class="<?=($metodo==$llave)?'active':null?>"><a href="<?=BASE_URL.$controlador.DS.$edicion?>"><?=ucfirst($llave)?></a></li>
                            <?php endforeach ?>
                        <?php endif ?>

                    </ul>
                </div><!-- /.navbar-collapse -->
            </div>
        </nav>

        <div class="container">
            <div class="jumbotron" style="padding:0 5px;">
                <figure class="text-center">
                    <object style="width:500px; height:281px; max-width:100%;"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=82376380&amp;force_embed=1&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=1&amp;color=ff9933&amp;fullscreen=1&amp;autoplay=1&amp;loop=0" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=82376380&amp;force_embed=1&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=1&amp;color=ff9933&amp;fullscreen=1&amp;autoplay=1&amp;loop=0" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="281"></embed></object>
                    <!--h1 class="text-center"><?=ucfirst($index['nombre'])?></h1>
                    <figcaption><?=$index['lema']?></figcaption-->
                </figure>
            </div>
            
            <!--div class="row">
                <div class="col-md-4">
                    <pre>$vistas => <?php print_r($vistas?></pre>
                </div>
                <div class="col-md-4">
                    <pre>$ediciones => <?php print_r($ediciones?></pre>
                </div>
                <div class="col-md-4">
                    <pre>$index => <?php print_r($index?></pre>
                </div>
            </div-->
            
            <?php include ROOT."controladores/$controlador.php"?>
            <?php call_user_func($metodo$argumentos); ?>
        </div>
        <footer class="text-center"><?=$index['lema']?></footer>

        <script src="//code.jquery.com/jquery.js"></script>
        <script src="<?=BASE_URL.'plantillas'.DS.'plantilla'.DS.'ajax.js'?>"></script>
        <script src="//netdna.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
    </body>
</html>
plantillas/plantilla/ajax.js
Código:
//<![CDATA[
$(document).ready(function(){
$('nav a').click(function(event) {
event.preventDefault(); // evitar la acción del link al href
var url = $(this).attr('href');
$('main').load(url + ' main');
});

$('#previous').click(function(){
window.history.back();
});
$('#forward').click(function(){
window.history.forward();
});

function loadView(view){
$('nav').load('views/'+view+'.php');
}
function printHistoryLength(){
$('span').text(window.history.length);
} 

$('nav').on('click','a',function(event){
if (typeof window.history.pushState == 'function') {
event.preventDefault();
var view = $(this).attr('href');
window.history.pushState(view, null, view);
loadView(view);
printHistoryLength();
}
});

window.history.replaceState($('strong').text(), null, $('strong').text());
printHistoryLength(); 

window.onpopstate = function(event){
loadView(window.history.state);
};

});
//]]>

Última edición por quico5; 09/08/2014 a las 15:33

Etiquetas: ajax
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:36.