Formulario de registro no envía datos con ajax

  • Autor Autor AlexMnrs
  • Fecha de inicio Fecha de inicio
Hola

Lo que veo rarro es que estas enviando la informacion por POST y al mismo tiempo por GET

Insertar CODE, HTML o PHP:
type: 'POST', <- aqui estas enviando POST
url: url + 'index.php?seccion=unirme&accion=registrar',<- aqui estas enviando GET


Si te fijas no estan llegando ni seccion ni accion, se corta, lo que debes de hacer es agregarlos al formulario como hidden, y quitarlos de la url o sea queda
url: url + 'index.php



Saludos
 
Última edición:

Creo que no hay problema, he visto ejemplos parecidos.. pero ahora me dejas con la duda. Es que POST es el método que utilizo para enviar los datos y la url es la dirección por la que pasa la petición, si pongo ahí GET se verían todos los datos en la url y es un formulario de registro, no tiene mucho sentido no? Alguna sugerencia?

De todas formas, estoy prácticamente seguro de que el problema está en lo que dijo kanikase, yo también llevaba todo el día fijándome en eso.
 
Última edición:
Sin ver el código completo del archivo está dificil decirte bien dónde está el problema. Dudo mucho que lo que pusiste esté completo, ya que ahí claramente se ve que está imprimiendo más contenido que en el código que pusiste no está en ningún lado.

Otra cosa, por lo que vi del código que pusiste, el archivo que llamas con el ajax es el mismo dónde está el formulario? :topsy_turvy: ya que ví que ahí mismo tienes la condición. Si lo ese es el caso, no le veo sentido que lo hagas con ajax, sería más fácil que hicieras un submit normal al mismo archivo.

El archivo que llames con el ajax, debería de ser un archivo aparte que contenga solo PHP, y de preferencia que te regrese un JSON.

P.D: No hay ningun problema por que mandes por POST y al mismo tiempo por GET directamente en la url.

Saludos.
 
El código está completo, te doy mi palabra. El unirme.php contiene tanto el formulario como el código php y el validar.js es donde valido los campos y todo lo demás. Ahí recojo la respuesta de "correcto" o "existe".

Enviado desde mi SM-G925F mediante Tapatalk
 
Luego de ver lo que te retorna el network el error es más que obvio, supongo que la línea que incluye el archivo registrar está en medio del HTML del index, tu index.php debería lucir así:
PHP:
<?php if($_GET['accion']=="registrar") { include_once("registrar.php"); exit(); }?>
// EL RESTO DE TU CODIGO HTML

De esta forma, si la página tiene que "accion=registrar" incluirá el archivo registrar.php y con EXIT dejará de mostrar el resto del HTML, por lo que si devolvería la palabra existe o X cosa
 
lombervid tienes razón no hay problema, pero el esta recogiendo las variables con post, ya hiciste un echo de las variables?

Creo que te estas complicando mucho la vida, es mas fácil hacer un formulario normal, revisarlo con la javascript que tienes y el ajax que se realice en otra pagina y mostrar el resultado en otra div, aqui un ejemplo

Form que llama a pagina encrypt.php

Insertar CODE, HTML o PHP:
<form action="encrypt.php" class="" id="convertir">
 <div class="input-group">
      <input name="link" type="text" class="form-control" placeholder="http://www.misitio.com....">
      <input name="idusu" type="hidden" value="<?=$idusug?>" />
      <span class="input-group-btn">
        <button class="btn btn-default" type="Submit" ><span class="glyphicon glyphicon-link"></span> Acortar</button>
       
      </span>
    </div><!-- /input-group -->
</form>

No tengo el que verifica pero eso es lo mismo que el tuyo y la llamada ajax

Insertar CODE, HTML o PHP:
<script>
$(document).ready(function(){
$('#form, #fat, #convertir').submit(function() {
  // Enviamos el formulario usando AJAX  
  $('#loading').show('slow');
        $.ajax({
            type: 'POST',
            url: $(this).attr('action'),
            data: $(this).serialize(),			
            // Mostramos un mensaje con la respuesta de PHP
            success: function(data) {
				$('#loading').hide();				
                $('#result').html(data);
				$('#result').fadeIn('slow');		
		
            }
        })        
        return false;
    });

</script>

Y la pagina que procesa encrypt.php recibe los datos y muestra resultado

Insertar CODE, HTML o PHP:
$link=$_POST["link"];
$idusu=$_POST["idusu"]; 

aqui se pone que vas a hacer con los datos

- - - Actualizado - - -

¿Tienes el Mozzila?

Si es asi, da clic derecho y da en inspeccionar elemento, estando en tu pagina, despues en Red, cuando este ahi envia el formulario, te va a mostrar adonde esta enviando los datos y cuales son, ahi puedes ver si esta enviando todo.

Si mal no me acuerdo, como esta enviando el index.php?seccion=unirme&accion=registrar se corta y no esta enviando los parametros, por que el GET se envia serializdo no en el link

Yo te aconsejaria que pusieras lo de seccion y accion en input hidden y cambies if (!isset($_GET['accion'])) { por if (!isset($_POST['accion'])) {

Saludos
 
Última edición:
Quizás tenéis razón y me estoy complicando demasiado. Hoy será el último día que intente solucionarlo con toda la ayuda que me habéis ofrecido y, si veo que no lo consigo, haré un formulario normal y corriente y se acabó. Llevo 3 días con esto y no voy a perder más tiempo. Seguro que vuestras ideas me serán de mucha ayuda, me voy a poner al lío y si lo arreglo os cuento!

😛8: