Web: Cambiar contenido sin refrescar pagina?

SikorZ

Bueno es sencillito esta vez jaja, quiero simplemente cambiar contenido de la web sin tener que enviar formularios y/o refrescar web...

Siempre me han dicho que eso se hace con AJAX o jQuery, sistemas que siempre me han parecido bastante dificiles de implementar (teniendo en cuenta la relatividad del termino dificil xD)...

Sabeis alguna otra manera mas sencilla para realizar eso?

Es para un proyecto, una web que escriba el codigo de un programa de C personalizado, tu elijes las funciones que quieres que el programa realice y la web te devuelve el codigo listo y perfecto para ser compilado xD

C

Yo sólo sé AJAX, que puede complicarse todo lo que quieras... o no.

Pero no te va a quitar nadie de aprendértelo.

NeB1

#1 AJAX xD es impepinable, o cualquier otra función javascript que acabe por modificar el contenido de un DIV a partir de las opciones que elija el usuario. Pero entonces todo el código que genera el código tendrá que estar escrito en javascript.

Usar AJAX con JQuery es algo increiblemente sencillo. Te voy a dar un pequeño ejemplo, que si sabes PHP te resultará fácil:

archivo consulta.php

switch($_POST['consulta'])
{
     case "a":
           echo "hola";
     break;
     case "b":
           echo "adios";
     break;
}

archivo index.php (donde está el usuario viendo la web):

<html>
<head>
<!-- Incluimos la libreria jquery, bajada de su web, www.jquery.com -->
<script type="text/javascript" src="/js/jquery-latest.js"></script>
<!-- Hacemos un pequeño script, que mediante AJAX haga consultas al archivo
anterior y muestre el resultado sin refrescar la web cuando se pulsa el boton 'consultar'-->
<script type="text/javascript">
    // Esto no hace falta que lo entiendas, es para que el código se ejecute tras
    // cargar toda la web, y no al empezar.
    $(document).ready(function(){
          // Cuando hacen click sobre consultar se ejecuta la función
          $("#consultar").click(function(){
                 // Esta variable contiene el valor del desplegable
                 var seleccion = $("#seleccion").val();
                 //Esta es la función AJAX, envía un dato al archivo anterior, y recoje la respuesta
                 $.post("consulta.php",{'consulta': seleccion}, function(respuesta){
                       // En la variable 'respuesta' tenemos la respuesta del archivo, la metemos
                       // en el DIV 'respuesta', valga la redundancia XDD
                       $("#respuesta").html(respuesta);
                 });
          }
    });
</script>
</head>
<body>
        <select id="seleccion">
               <option value="a">Saludar</option>
               <option value="b">Despedir</option>
        </select>
        <input type="button" id="consultar" />
        <div id="respuesta"></div>
</body>
</html>

Todo está sin probar, solo es para que veas el funcionamiento, espero que se entienda.

1 respuesta
SikorZ

#3 Que bueno tio, fantastico, ahora lo probare y te digo, a ver si consigo este ejemplillo funciona y a partir de ahi voy tirando jaja, asi, gracias a como me lo planteas si que parece "sencillo".

Muchisimas gracias, luego posteo para decir si va o he tenido problema/duda_

EDIT:
Aqui os dejo la tonteria de web jaja, pero quizas para alguien que quiera empezar sea de ayuda_...

Lo hago por aburrimiento vaya xDDD
http://zszcstallnet.com/test.php

DarkSoldier

y siguiendo con el tema, para hacerlo en una web mas bestia ? con el framework codeigniter ? para no tener que cargar header footer y demas cada vez que hagan click en un menu...

2 respuestas
suaveSHOW

#5 Eso llevaría bastante más trabajo obviamente, no he trabajado con él, pero lo que tendrías que mirarte es la funcion jQuery.load, que lo que hace es cargarte el contenido en el lugar que tu le ordenes, por ejemplo en div#contenido.

Y haces algo así:(Lo he hecho deprisa y corriendo, ahora no tengo tiempo para mirarlo a fondo, luego me paso y veo a ver que decís)

spoiler
1 respuesta
NeB1

#5, #6 aunque eso está bien, tienes un plugin que te lo hace bastante más sencillo: http://max.jsrhost.com/ajaxify

Simplemente a un anchor le metes la clase 'ajaxify' y arreando.

2 respuestas
catalon

Si le preguntas eso a mi antigua profesora de web te dira que uses iframes lol

Dale caña al AJAX que vale la pena.

1 respuesta
suaveSHOW

#7 pero con lo que he hecho yo cogerá automaticamente todos los enlaces, y es mas sencillo que ir 1x1 poniéndole la clase.

NINJA EDIT: puedes poner $("a").ajaxify() XD

1 respuesta
NeB1

#8 LOLOLOLOLOLOLOLOL

#9 Claro xD es por si necesitas enlaces que no sean ajax u algo. Pero zi, lo tuyo en verdad está bastante bien (si te soy sincero, ni lo había mirado xDDDDDD). Lo que no sé si tienes y es algo que se suele necesitar, es implementar un historial, que cuando apretres hacia atras y hacia delante, te funcione igual la web.

1 respuesta
suaveSHOW

#10 si, me he bajado el plugin, esta muy bien, porque dije, voy a echarle un ojo al ajaxify este y vi lo del historial que no tengo ni zorra.

DarkSoldier

#7 i loff uuuu

Usuarios habituales

  • DarkSoldier
  • suaveSHOW
  • NeB1
  • catalon
  • SikorZ
  • castorcillo