AJAX - Respuesta ajax no comparable

   
Vista:

Respuesta ajax no comparable

Publicado por KaelL (3 intervenciones) el 03/05/2014 16:02:58
Buen dia a todos,

bueno, esta es la primera vez que uso un foro y soy nuevo en estas cuestiones de ajax y javascript, sean pacientes por favor.

mi problema radica en lo suiguiente: estoy haciendo una funcion javascript que hace un llamado ajax asincrono, la funcion php que retorna una actualizacion a la base de datos funciona bien. y retorna lo que yo le digo; el problema es cuando la respuesta llega al javascript.

esta respuesta esta de este estilo "ok/*respuesta segun la consulta"

en el javascript hago un -> var respuesta = ajax.responseText.split("/*")

pero cunado pregunto si respuesta[0] == 'ok' el javascript me da false, por lo tanto no entra al if y lo curioso es que tengo otras funciones con la misma estructura y funcionan perfectamente.

alguien tiene un idea de que pueda estar pasando???

agradezco la ayuda que me puedan prestar.

por si acaso dejo las funciones.

funcion javascript
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
function actualizarMatIso(datos)
{
	//alert("Escribir ajax de actualización -> "+datos);
	var nombre = datos.split('_');
	var cantidad = document.getElementById('cantidad_'+nombre[1]+'_'+nombre[2]+'_'+nombre[3]);
	var peso = document.getElementById('peso_'+nombre[1]+'_'+nombre[2]+'_'+nombre[3]);
	//alert("cantidad: "+cantidad.value+" y peso : "+peso.value);
	var ajax = new creaAJAX();
	ajax.open("POST", "tuberia_ajax.php?actualizarMatIso", true);
	ajax.setRequestHeader("content-type", "application/x-www-form-urlencoded");
	var datosMat = "isometrico="+nombre[1];
	datosMat = datosMat + "&material="+nombre[2];
	datosMat = datosMat + "&destino="+nombre[3];
	datosMat = datosMat + "&cantidad="+cantidad.value;
	datosMat = datosMat + "&peso="+peso.value;
	alert(datosMat);
	//return false;
	ajax.send(datosMat);
	ajax.onreadystatechange = function()
	{
		if(ajax.readyState == 4)
		{
			//alert("Respuesta ajax -> "+ajax.responseText);
			var mensaje = ajax.responseText.split("/*");
			alert(mensaje[1]);
			if(mensaje[0] == 'ok')
			{
				alert('Actualizando listado');
				isometricoMateriales(nombre[1]);
			}
		}
	};
}

codigo php que responde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
if(isset($_GET['actualizarMatIso']))
{
	//echo "ok/*".print_r($_POST,1);
	//exit;
	$sql = "UPDATE material_quantity SET cantidad = {$_POST['cantidad']}, peso = {$_POST['peso']}
			WHERE id_isometrico = '{$_POST['isometrico']}'
			AND id_material = '{$_POST['material']}'
			AND destino = '{$_POST['destino']}'";
	//echo "error/*".$sql;
	//exit;
	$consultor1->procesaSQL($sql);
	if(!$consultor1->errorTareas)
	{
		echo "ok/*Los datos han sido actualizados.";
	}
	else echo "error/*Se ha presentado un problema al actualizar los datos.";
}
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

Respuesta ajax no comparable

Publicado por xve (167 intervenciones) el 03/05/2014 21:46:36
Hola Kaeil, el código parece estar bien, lo que me temo es que la variable ajax.responseText no tenga la respuesta...

Si activas el alert alert("Respuesta ajax -> "+ajax.responseText);, el texto que muestra es correcto?
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

Respuesta ajax no comparable

Publicado por KaelL (3 intervenciones) el 04/05/2014 14:03:10
Hola xve,
si la respuesta retornada es correcta sea por el lado de ok o el de error, la respuesta no tiene problema en contenido, es cuando le hago el split en javascript, en la posicion cero debe quedar 'ok' o 'error' dependiendo del caso, y asi sucede.
lo mas extraño es que cuando hago if(mensaje[0] == 'ok') me da false, pero si antes hago alert(mensaje[0]), me dice 'ok', no entiendo como puede tirar un false esta condicion.
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

Respuesta ajax no comparable

Publicado por xve (167 intervenciones) el 04/05/2014 18:12:42
Hola Kaeil, yo no puedo probar tu código directamente, pero si que he intantado simularlo, y me ha funcionado perfectamente.

Este es el código que he utilizado para la prueba.
1
2
3
4
5
6
7
8
9
10
<script>
x="ok/*Los datos han sido actualizados.";
 
separado=x.split("/*");
 
if(separado[0]=="ok")
{
    document.write("ok");
}
</script>

Si te devuelve ok, no entiendo porque no te funciona el condicional...
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

Respuesta ajax no comparable

Publicado por KaelL (3 intervenciones) el 05/05/2014 18:14:48
Hola xve,

la verdad yo tampoco lo entiendo, pero he decidido solucionarlo de una forma simple, cuando la respuesta ajax es correcta, envío la cadena respuesta con el 'ok/*respuesta de la consulta o lo que sea correcto.' y cuando es incorrecta solo envio la cadena de respuesta 'cadena de respuesta a un error en la consulta o lo que sea'. asi, cuando llega al javascript le hago el respuesta.split('/*') pero el if se lo hago con respuesta.legth == 2 y de esa forma el condicional no me genera el problema. Curioso verdad? , aún asi agradezco tu ayuda y tu interes. y si alguien llega a tener el mismo incoveniente, esta será una solución sencilla. . 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
Imágen de perfil de xve

Respuesta ajax no comparable

Publicado por xve (167 intervenciones) el 05/05/2014 22:28:29
Yo lo que te recomendaría, es utilizar json, en vez de una cadena y luego partirla... ahí de seguro que te funcionara correctamente, ya que se entienden perfectamente tanto php como javascript con json.

Espero que te sirva.
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