AJAX - DIV con ajax

   
Vista:

DIV con ajax

Publicado por Adrian (11 intervenciones) el 14/01/2016 16:58:26
Hola,

Tengo una web en la que los menus se cargan con ajax.

El problema es que una pagina de las que se carga es un formulario que manda los valores de las cajas a un php para insertarlo en una base de datos.

Notice: Undefined index: nombre in C:\xampp\htdocs\xxxxxxxx\ins_crear_aviso.php on line 13

Este un mi codigo ajax y el formulario

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
$(function(){
	$("#botonavisos").click(function(){
		var url = "ins_crear_aviso.php";
 
		$.ajax({
			type:'POST',
			url:url,
			data: $("#formu2").serialize(),
			success: function(data){
				$("#guardar_resultado").html(data);
			}
		});
 
		return false;
 
	});
 
});
</script>
	<h2>Crear Aviso</h2>
	<table title="Crear Aviso" align="center"><form id="formu2" name="formu2" method="post">
    	<tr>
        	<td>Nombre:</td>
            <td colspan="2"><input type="text" name="nombre" id="nombre" /></td>
        </tr>
        <tr>
        	<td>Localicazión:</td>
            <td colspan="2"><input type="text" name="localizacion" id="localizacion" /></td>
        </tr>
        <tr>
        	<td>Descripción adicional: </td>
        	<td colspan="2"><textarea cols="80" rows="10" name="descripcion"></textarea></td>
 
        </tr>
         <tr>
         	<td>Prioridad: </td>
        	<td><select name="prioridad">
            		<option>Urgente</option>
                    <option>Preferente</option>
            	</select>
            </td>
            <td></td>
        </tr>
        <tr>
         	<td></td>
        	<td><input type="button" value="Guardar" id="botonavisos" /></td>
            <td><div id="guardar_resultado"></div></td>
        </tr>
    </form></table>

Y así recojo la variable en el PHP (Esto se que funciona)

1
$nombre = addslashes(htmlspecialchars($_POST["nombre"]));

Adjunto tambien la pagina donde se carga todo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<script>
	$(document).ready(function(e) {
        $('#boton1').click('crear_aviso.php', function(data){
			$('#resultado').load('crear_aviso.php');
		});
    });
</script>
 
</head>
 
<body>
<div id="header">
    <div id="logo_cabecera">
    	<div id="nivel_inicio">
        	<a href="inicio_usuario.php"><img id="lista_img" src="images/logouser.png" width="40" height="40"/></a>
        </div>
    </div>
</div>
 
<div id="menu">
	<ul id="navigation">
    	  <li><a id="menu_a" href="inicio_usuario.php"><img src="images/casa.png" width="20" height="18" /></a></li>
      	  <li id="boton1"><a id="menu_a" href="#">Crear Aviso</a></li>
          <li id="boton2"><a id="menu_a" href="#">Consultar Aviso</a></li>
          <li id="boton3"><a id="menu_a" href="#">Consultar O.T.</a></li>
          <li id="boton4"><a id="menu_a" href="#">Parte de trabajo diario</a></li>
          <li id="boton5"><a id="menu_a" href="#">Planificación O.T.</a></li>
     </ul>
</div>
 
<div id="centro">
	<h2><a href="cerrar_sesion.php"><img title="Cerrar sesión" src="images/salir.png" width="25" height="25"/></a>&nbsp;  <?php echo "Bienvenido ", $_SESSION['usuario'], "&nbsp;|&nbsp;Centro: ", $_SESSION['centro']; ?></h2>
</div>
 
<div id="resultado_ajuste">
	<div id="resultado">
 
	</div>
</div>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

DIV con ajax

Publicado por xve (167 intervenciones) el 14/01/2016 18:18:26
Hola Adrian, es un notice, no es un error... simplemente te notifica que estas accediendo a un índice de un array que no existe.

Cual es la linea 13?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 15/01/2016 09:10:58
Esta es la linea 13.

$nombre = addslashes(htmlspecialchars($_POST["nombre"]));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

DIV con ajax

Publicado por xve (167 intervenciones) el 15/01/2016 12:45:08
Hola Adrian, si te da el error en esa linea, es porque $_POST no contiene el indice "nombre"... aunque es muy extraño, porque si que esta en el formulario... lo que veo, en es que en el <form> no indicas la pagina donde enviar el formulario...

1
<form id="formu2" name="formu2" method="post">

faltaria el action=""... algo así:

1
<form action="pagina.php" id="formu2" name="formu2" method="post">

Puede ser ese el problema?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 15/01/2016 13:50:52
Eso no es el problema porque el form se envia con el ajax.

Ademas si carga la pagina directamente en el navegador y no a traves de otro ajax funciona perfectamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

DIV con ajax

Publicado por xve (167 intervenciones) el 15/01/2016 16:13:32
Prueba una cosa, antes de la linea del error, pon esto:

1
print_r($_POST);

haber que te devuelve... así veremos exactamente lo que estas pasando?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 18/01/2016 11:30:24
Hola,

Lo que devuelve es Array( )

Si yo se que no esta enviando los datos. Lo que pasa que no se porque.

Lo que estoy haciendo es que un menú carga una pagina con AJAX, esta pagina cargada a su vez carga otra pagina que también contiene código AJAX. El unico problema es que el codigo AJAX no manda las variables y claro me salta la advertencia siguiente:

Notice: Undefined index: nombre in C:\xampp\htdocs\xxxxxxx\ins_crear_aviso.php on line 14

Es decir aquí se ejecutan 3 archivos

ARCHIVO 1- inicio_usuario.php

pagina html con un menú que carga pagina en un DIV mediante AJAX

ARCHIVO 2 - crear_aviso.php

pagina html cargada mediante AJAX que contiene un formulario para INSERTAR DATOS en una base de datos mediante AJAX.

ARCHIVO 3 - ins_crear_aviso.php

recoge los valores y los insertar en la base de datos

Soy nuevo en AJAX y no se si en realidad lo estoy usando bien, si alguno tiene otra manera estoy abierto a sugerencias.
Lo que quiero es que se cargue todo sin refresco de pantalla primero las paginas del menú y después las inserciones a la base de datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

DIV con ajax

Publicado por xve (167 intervenciones) el 15/01/2016 16:14:29
Prueba a poner el código de AJAX de javascript debajo del formulario...

Coméntanos, ok?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 18/01/2016 11:30:51
Esto no funciona

gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

DIV con ajax

Publicado por Vainas (71 intervenciones) el 15/01/2016 21:15:46
Buenas:

Primero que nada has un console log de esto:

1
$("#formu2").serialize()

Para ver si se estan enviando bien los valores al server. Esta claro que no se estan enviando bien.

Una cosa que he visto que tienes mala es esta:

1
$('#boton1').click('crear_aviso.php', function(data){...

Segun la documentacion de jQuery es asi:

1
$('#boton1').click(function(data){...

Ya nos diras que te devuelve lo primero.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 18/01/2016 11:32:39
hola,

he modificado lo que has dicho y funciona. Pero esa parte funcionaba también con lo que tenia yo. Gracias aun así.

Arriba respondí a otra persona con el problema mejor explicado. Gracias por tu ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

DIV con ajax

Publicado por Vainas (71 intervenciones) el 18/01/2016 13:38:14
No me has respondido esto:

Primero que nada has un console log de esto:

1
console.log($("#formu2").serialize());

Que sale por la consola del chrome?

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 18/01/2016 15:11:08
Esto es lo que me dice, la consola de google chrome

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.
4VM522:10
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

DIV con ajax

Publicado por Vainas (71 intervenciones) el 18/01/2016 18:10:07
Eso es una advertencia de que estas haciando una llamada mediante ajax que tiene un script y esa llamada es sincrona.. algo con jQuery pero que no es un error sino simplemente un aviso Aqui explican en ingles las causas de porque sucede http://stackoverflow.com/a/28478146

Pero que yo necesito saber es si se esta realizando bien el serialize() asi que en ese mismo lugar donde vez el mensaje coloca:

1
console.log($("#formu2").serialize());

y dinos que esta desvolviendo.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 19/01/2016 09:13:12
Buenos dias,

Lo que devuelve es:

undefined
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

DIV con ajax

Publicado por Vainas (71 intervenciones) el 19/01/2016 10:45:38
Bien. Y si pones ese mismo console en tu codigo en este punto:

1
2
3
4
5
$("#botonavisos").click(function(){
        var url = "ins_crear_aviso.php";
        console.log($("#formu2").serialize());
        $.ajax({
                ... resto de codigo ....

Que te sale por la consola del chrome?

Estoy intentando comprobar si se esta realizando bien la funcion sobre los parametros que tienes ya que es alli donde esta el error.

La consola de chrome en su pestaña "Network" se puede ver si se ha realizado una llamada ajax o no. Solo hay que identificar en esta pantalla en la zona central el nombre de tu llamada (que es tu archivo .php) se puede pinchar sobre la llamada y comprobar si se estan enviando los campos

image-91

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 19/01/2016 10:52:22
No aparece nada en la consola de chrome con ese codigo.

Estoy ya desesperado

Gracias
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 19/01/2016 11:07:27
Perdón que no había leído bien el mensaje

General

Request URL:http://localhost:8080/renovefree/ins_crear_aviso.php
Request Method:POST
Status Code:200 OK
Remote Address:[::1]:8080

Response Headers

Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Length:764
Content-Type:text/html; charset=UTF-8
Date:Tue, 19 Jan 2016 10:05:16 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=100
Pragma:no-cache
Server:Apache/2.4.17 (Win32) OpenSSL/1.0.2d PHP/5.6.15
X-Powered-By:PHP/5.6.15

Request Headers

Accept:*/*
Accept-Encoding:gzip, deflate
Accept-Language:es-ES,es;q=0.8
Connection:keep-alive
Content-Length:0
Cookie:PHPSESSID=j2le40b8br6tkt4ks078asr823
Host:localhost:8080
Origin:http://localhost:8080
Referer:http://localhost:8080/renovefree/inicio_usuario.php
User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36
X-Requested-With:XMLHttpRequest
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Vainas

DIV con ajax

Publicado por Vainas (71 intervenciones) el 19/01/2016 18:36:18
En un principio esta:

Request URL:http://localhost:8080/renovefree/ins_crear_aviso.php
Request Method:POST
Status Code:200 OK
Remote Address:[::1]:8080

podria indicarnos que se esta realizando la llamada pero sin parametros asi que estamos en el mismo punto inicial pero con comprobaciones echas.

Solo queda que me digas si metiendo el console en el codigo te devuelve algo o sigue dando el undefine pero me temo que va a dar undefine. Si te desvuelve undefine poniendo el console.log(...) como te digo en el post mio anterior.

Podrias comprobar meter los parametros en bruto al ajax a ver si al menos llegan al servidor:

1
2
3
4
5
6
7
8
9
10
$(function(){
	$("#botonavisos").click(function(){
		var url = "ins_crear_aviso.php";
 
		$.ajax({
			type:'POST',
			url:url,
			data: 'nombre=paco&localizacion=alguna&descripcion=otra&prioridad=0',
 
			... resto de codigo

Espero que te sirva. Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

DIV con ajax

Publicado por adrian (11 intervenciones) el 19/01/2016 19:00:39
Ya lo he resuelto pero he tenido que volver a hacer todo desde 0 porque ya no entendia el problema.

Ahora lo hago un poco distinto y funciona.

Gracias y hasta la proxima.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar