AJAX - Conexion JS-PHP incompleta

 
Vista:
sin imagen de perfil

Conexion JS-PHP incompleta

Publicado por Alberto (1 intervención) el 24/12/2015 04:31:17
Hola a todos, tengo una pequeño problema que no consigo ver... Acabo de empezar un proyecto y tengo un problema de conexion entre el script JS y el PHP. El código es el siguiente:

almacen.js
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
$(document).ready(function(){
 
	$.ajax({
		url: 'almacen_model.php',
		type: 'POST',
		assync: true,
		data: {'f': 'cargarAlmacen'},
		dataType: 'json',
		encode: true,
		success: function(articulos){
 
			$.each(articulos, function(i, articulo){
				row = '<td>'+articulo.id+'</td><td>'+articulo.descripcion+'</td>';
				$('tbl_almacen').append(row);
			});
		},
		error: function(){
			console.log('error al cargar los datos del almacén');
		}
 
	}).fail(function(){
		console.log('error en la petición ajax del almacén');
	}).done(function(){
		console.log('petición ajax realizada');
	});
 
});

almacen_model.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
	SESSION_START();
	include('funciones.php');
	$con = connectDB();
 
	switch ($_POST['f']) {
		case 'cargarAlmacen':
 
			$q = "SELECT * FROM almacén";
			$result = mysqli_query($con, $q);
			while($fila = mysqli_fetch_array($result)){
				$id = $fila['Id_Producto'];
				$descripcion = $fila['Concepto'];
 
				$articulos[] = array('id'=> $id, 'descripcion'=> $descripcion);
			}
 
			echo json_encode($articulos);
			break;
 
		default:
			break;
	}
?>

El PHP no me muestra ningun error, y si hago algún echo no me lo muestra. Si llamo al PHP desde el script de la vista con un include, sí muestra mensajes y y puedo verificar que no es ningún problema de conexión con las base de datos, pues ésta se realiza.

Sin embargo, con el código tal y como lo muestro aquí, no consigo mostrar nada con echos, por lo que entiendo que no está entrando en el script PHP. Lo único que obtengo son los mensajes de error y fail de la petición AJAX en la consola. La url del archivo está comprobada y los archivos se encuentran en la misma carpeta.

A ver si alguien puede ayudarme... Gracias de antemano.
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 Vainas
Val: 47
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

Conexion JS-PHP incompleta

Publicado por Vainas (71 intervenciones) el 25/12/2015 21:28:21
Buenas:

Soy un pesado siempre con lo mismo pero por este foro veras varios mensajes mios que ponen:

Tienes app en chrome (extensiones) como Advanced REST client o Postaman - Rest Client en el que puedes hacer una llamada al servidor con POST a ver si devuelve lo que tiene que devolver.

Esto lo puedes usar para comprobar si tu PHP desvuelve en realidad un json etc etc. Te faltan cosas como por ejemplo:

1
header('Content-type: application/json; charset=utf-8' );

Esto es para que el navegador reciba correctamente el json (en este caso jquery).

En la parte de javascript tienes un par de errores:

1
2
3
4
5
6
7
$.ajax({
		url: 'almacen_model.php',
		type: 'POST',
		//async: true,  // lo tenias mal y aparte de eso por defecto viene a true asi que no deberia ser necesario cambiarlo a menos que quieras hacer una llamada ajax que bloquee el javascript ya que con false una de las cosas que sucede es que la llamada no es asincrona.
		data: {'f': 'cargarAlmacen'},
		dataType: 'json',
		//encode: true, //no existe tal propiedad en el uso de ajax para jquery (no al menos documentada).

Tambien te recomiendo que mires un poco la documentacion de http://api.jquery.com/jquery.ajax/

Como final, puedes activar los errores de php a ver si te llega algo mas:

1
2
ini_set('display_errors', 1);
error_reporting(E_ALL);

y en jquery puedes aunque tengas un fallo recibir los mensajes:

1
2
jqXHR.done(function( data, textStatus, jqXHR ) {});
jqXHR.fail(function( jqXHR, textStatus, errorThrown ) {});

fijate que done y fail tiene parametros como textStatus y demas que puedes imprimir en consola.

Espero que te ayude.

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