Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con WS y ajax

Estas en el tema de Problema con WS y ajax en el foro de PHP en Foros del Web. Buenos dias a todos, resulta que llevo un par de dias peleandome, ya que estoy haciendo una pequeña web, y tengo unos servicios web montados ...
  #1 (permalink)  
Antiguo 29/10/2015, 02:02
Avatar de minicrash  
Fecha de Ingreso: agosto-2011
Ubicación: Santiago de compostela
Mensajes: 7
Antigüedad: 12 años, 8 meses
Puntos: 1
Problema con WS y ajax

Buenos dias a todos,

resulta que llevo un par de dias peleandome, ya que estoy haciendo una pequeña web, y tengo unos servicios web montados para realizar las operaciones contra la base de datos en PHP, lo saque de un manual de internet, ya que antes no tenia ni idea, el caso es que tengo varios WS, pero claro a la hora usarlos se me complica la cosa, resulta que tengo uno para recuperar todos los elementos de una tabla que me funciona perfectamente y soy capaz de recuperar todo desde el HTML con Ajax, pero a la hora de insertar se me complica el asunto porque no se ni por donde empezar. Adjunto el WS y un pequeño trozo del HTML asi como la llamada del Ajax.

Código PHP:
<?php
/**
 * Insertar una nueva jornada en la base de datos
 */

require 'Emparexamento_tmp.php';

if (
$_SERVER['REQUEST_METHOD'] == 'POST') {

    
// Decodificando formato Json
    
$body json_decode(file_get_contents("php://input"), true);

    
// Insertar jornada
    
$retorno Emparexamento_tmp::insert(
        
$body['temporada'],
    
$body['xornada'],
    
$body['oponente1'],
    
$body['oponente2'],
    
$body['data']);

    if (
$retorno) {
        
// Código de éxito
        
print json_encode(
            array(
                
'estado' => '1',
                
'mensaje' => 'Creación exitosa')
        );
    } else {
        
// Código de falla
        
print json_encode(
            array(
                
'estado' => '2',
                
'mensaje' => 'Creación fallida')
        );
    }
}
?>
El codigo HTML serian todos los campos de estes estilo:

Código HTML:
<select id="oponente1_combo" name="oponente1"/> 
Y por ultimo la llamada al WS con Ajax la tengo de la siguiente forma:

Código:
$('#formulario').submit(function() {
			emparexamento["temporada"] = $("#temporada").val();
			emparexamento["xornada"] = $("#xornadas_combo").val();
			emparexamento["oponente1"] = $("#oponente1_combo").val();
			emparexamento["oponente2"] = $("#oponente2_combo").val();
			emparexamento["data"] = $("#datepicker").val();
			$.ajax({
                		type: "POST",
                		url: "ruta_dominio/insertar_emparexamento_tmp.php",
                		contentType: "application/json; charset=utf-8",
                		data: $.toJSON(emparexamento),
               			success: function (response){
					alert("Insertado correctamente");
                		},
                		failure: function (msg){
                    			alert(msg);
                		}
            		});
        	});
  #2 (permalink)  
Antiguo 30/10/2015, 05:41
Avatar de minicrash  
Fecha de Ingreso: agosto-2011
Ubicación: Santiago de compostela
Mensajes: 7
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Problema con WS y ajax

Hola, nadie sabe nada al respecto? podriais moverme el hilo a JAVASCRIPT?

gracias
  #3 (permalink)  
Antiguo 30/10/2015, 19:58
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: Problema con WS y ajax

Saludo

Pues para lo que se quiere lograr, yo propongo cambiar
la estructura de armado de datos, para que sea un string.

Ej
Código Javascript:
Ver original
  1. var emparexamento =
  2.                 'oponente1=' + $("#oponente1_combo").val() +
  3.                 '&oponente2=' + $("#oponente2_combo").val() +
  4.                 '&oponente3=' + $("#oponente3_combo").val();

Luego, en el ajax, en el data, usar parseJSON
en vez de toJSON (A menos que se tengan ya las librerías para esa función),
y no usar contentType.

Y finalmente, teniendo en cuenta que lo que se recibe es un json,
al response hacerle un parseJSON para que puedan ser usados
sus elementos sin inconveniente.
Luego del parseJSON en el alert por ej se puede usar response.mensaje

Espero sirvan los tips para lo que se busca.
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #4 (permalink)  
Antiguo 04/11/2015, 09:33
Avatar de minicrash  
Fecha de Ingreso: agosto-2011
Ubicación: Santiago de compostela
Mensajes: 7
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: Problema con WS y ajax

Finalmente el principal problema para seguir avanzando se encontraba en que no estaba entrando en el submit, debido a que estaba fuera del ready de Jquery.

Por otra parte seguia sin funcionar y el cambio en la forma de enviar el Json fue suficiente, adjunto el codigo de como queda la funcion ajax:

Código:
$.ajax({
	type: "POST",
	url: "......../insertar_emparexamento_tmp.php",
	contentType: "application/json; charset=utf-8",
	dataType: 'json',
	data: JSON.stringify(emparexamento),	
	success: function (response){
		alert("Insertado correctamente");
	},
	failure: function (msg){
		alert(msg);
	}
});
gracias por el aporte igualmente

Etiquetas: ajax, formulario, html, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:10.