¿Duda con PHP y Divs -paginas que se abran en un div-?

Enigmatiko99

Hola a todos, alguien que me pueda ayudar por favor...

Resulta que estoy creando un sistema en php/jquery/css. Y quiero que la pagina que abro se muestren en un div, buscando en internet encontre esto:

<script type="text/javascript">
$(document).ready(function()
{
$("#nav a").each(function()
{
var href = $(this).attr("href");
$(this).attr({ href: "#"});
$(this).click(function()
{
$("#centro").load(href);
});
});
});
</script>

Hasta aquí perfecto siempre y cuando se llame desde aquí.

<ul id="nav">
<li><a href="paginas/cs1.php">PRIMER EJEMPLO.</a></li>
</ul>

Es decir desde un href, pero yo quiero que haga lo mismo después de haber llenado un formulario; esto es...
LLeno mi formulario que está en la pagina cs1.php y quiero que el mensaje de confirmación aparezca en esa misma zona, no en una pagina aparte.
Alguién me puede ayudar?

<form action="paginas/cs2.hp" method="post">
----
----
</form>

NOTA.- El proceso de guardado de datos está en una página que se llama cs2.php y que es llamada desde cs1.php. Quiero que cs2.php aparezca en el div #centro.
si lo hago de ésta forma

<script>
function cambiar(pagina) 
{
$('#centro').load(pagina);
$('#centro').fadeOut(400);
$('#centro').load(pagina);
$('#centro').fadeIn(400);
}
</script>

y lo llamo desde el formulario.

<form action= "javascript:cambiar('paginas/cs2.php');" method="post" >

si me muestra en el div deseado pero los datos del formulario se pierden y no guarda nada en la base de datos.

gonya707

un consejillo, pon tu codigo entre etiquetas

 que sino no hay quien lea nada
grivcon

#1 Para que quieres un formulario con su action si no quieres cambiar de pagina? Los action se usan para que poder medio de get o post, el navegador al cambiar de página pueda obtener unos datos, crea unos campos de texto, un boton, y en el boton, evento onclick que se ejecute un AJAX hacia esa pagina cs2.php y luego seleccionando el div que quieres, que su contenido sea la respuesta del AJAX de cs2.php.

Cobre

cambia la funcion click de jquery por on:

http://api.jquery.com/on/

$( "#dataTable tbody tr" ).on( "click", function() {
  alert( $( this ).text() );
});
Sergeon

#1 Si quieres que el servidor valide y procese el formulario y después devuelva un mensaje de confirmación, sin salir de la página en la que estás, necesitas hacer una petición AJAX. ¿Te refieres a esto? Es que no entiendo muy bien lo que quieres hacer exactamente si no.

Skiuv

onclick en el boton del formulario con:

la funcion post( "pagina_validacion.php", { dato1: "Hola", dato2: "Que tal" }, function(data){
seleccionas el div donde se muestra el resultado .html(data);
});

kraneok

Creo que te están fallando los selectores de CSS, ¿ utilizas un debugger como firebug ?, si no es así hazlo y ya, si no estaras dando palos de ciego.

  $( 'form' ).submit( function()
  {
         $( '#centro' ).load( $( 'ul#nav li a' ).attr( 'href' ) );   
});
tada

Al clicar al botón de enviar, envias los datos del formulario con ajax y posteriormente cargas el contenido de cs2.php en el div. Sería algo parecido a esto, pero enviando los valores del formulario correctos:

$( "#enviar" ).on( "click", function() {
   $.post( "cs2.php", { dato1: "asd", dato2: "qwerty" }, function(data){ 
     $("#centro").load("paginas/cs2.php");
   });
});
JuAn4k4
$("body").on("submit", "form", function(e) {
  e.preventDefault(); // Previene el submit normal del form.

  var $form = $(this),
        data = $form.serialize(),
        action = $form.attr("action"), 
        method = $form.attr("method");

$.ajax( {
    url: action, 
    method: method,
    data : data, 
    success: function(response) {
        $form.replaceWith($(response)); // Esto lo puedes cambiar, para cargar el contenido que quieras donde estaba el formulario.   
    } 
  });
 
});

Aprende jQuery

Usuarios habituales

  • JuAn4k4
  • kraneok
  • Skiuv
  • Sergeon
  • Cobre
  • grivcon
  • Enigmatiko99