Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Como añado datos a un combo con javaSrcipt y lo recogo con POST

Estas en el tema de Como añado datos a un combo con javaSrcipt y lo recogo con POST en el foro de Javascript en Foros del Web. Expongo mi ejemplo, a través de mysql recogo datos y relleno un combo con php y smary, luego tengo un botón para añadir más datos ...
  #1 (permalink)  
Antiguo 24/04/2013, 03:09
 
Fecha de Ingreso: octubre-2009
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Como añado datos a un combo con javaSrcipt y lo recogo con POST

Expongo mi ejemplo, a través de mysql recogo datos y relleno un combo con php y smary, luego tengo un botón para añadir más datos a este combo y a la bbdd. Todo me funciona correctamente pero a la hora de recoger los datos por POST ese dato añadido al combo no me lo recoge

CODIGO:

Codigo HTML, con smarty donde relleno el combo, y el botón para añadir el nuevo dato al combo
Código:
<div class="form-field">
	<label for="cliente_sector">Sector*</label>
        <select name="cliente_sector" id="cliente_sector">
               {section name=sector loop=$sectores}
                       <option value="{$sectores[sector].sector}">{$sectores[sector].sector}</option>
               {/section}
         </select>
        <p>Sector del cliente</p>
        <label onclick="javascript:anadir('divAnadir')">Nuevo sector</label>
</div>
                     
 <div id="divAnadir" style="display: none;">
        Nuevo sector:<input type="text" id="nuevo_sector" name="nuevo_sector" value=""/>
         <input onclick="javascript:nuevoSector()" type="button" value="Añadir nuevo sector" />
</div>
Funciones javascript
Código:
function anadir(a){
    if(document.getElementById(a).style.display=="none")
        $("#divAnadir").css("display", "block");
    else
        $("#divAnadir").css("display", "none");
}
function nuevoSector(){
    var datos = document.getElementById("nuevo_sector").value;
    $.get("/ajax/altaNuevoSector.php?sector="+datos, datos, function(data){
        if(data != 1) {
            alert('Nuevo sector añadido');
            $("#divAnadir").css("display", "none");
            $("#cliente_sector").append('<option value=" " selected="selected">'+data+'</option>')
            return true;
        }else{
            alert('Este sector ya existe, pruebe de nuevo.');
            return false;
        }  
    });
}
Script en php para actualizar bbdd y respuesta al javascript:
Código:
<?php
    session_start();
    require_once('../includes/config.php');
    if($_GET['sector']){
        $sql = "INSERT INTO clientes_sectores(sector) VALUES ('".$_GET['sector']."')";
        $consulta = $con->ejecutar($sql);
         
        if(!is_numeric($consulta))
            echo '1';
        else
            echo $_GET['sector'];
    }
    
?>
Todo me funciona se añade el dato a la bbdd y aparece el dato en el combo, el problema es que el combo esta en un form, por post recogo los datos y si en cliente_sector dejo el nuevo valor no me lo recoge, la variable $_POST['cliente_sector'] esta vaciada. ¿Como lo soluciono?

Gracias
  #2 (permalink)  
Antiguo 24/04/2013, 10:21
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como añado datos a un combo con javaSrcipt y lo recogo con POST

te recomiendo que anides el <select> en una capa extra y en vez de añadir una opción lo reconstruyas por completo, sé que dirás que es ilógico, pero la razón es que en algunos navegadores falla el asignar options dinámicamente, lo mejor es concatenar su estructura y usar innerHTML contra la capa extra.

por lo del POST no veo que hagas $_POST['cliente_sector'] en ningún sitio, además de que estás enviando la petición ajax por GET y no POST
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 24/04/2013, 10:47
 
Fecha de Ingreso: octubre-2009
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Como añado datos a un combo con javaSrcipt y lo recogo con POST

No he escrito especificamente lo del $_POST, como he dicho el combo esta dentro de un form y es de ahí donde lo hago.
Código:
<form method="post" action="algo.php>
<div class="form-field">
	<label for="cliente_sector">Sector*</label>
        <select name="cliente_sector" id="cliente_sector">
               {section name=sector loop=$sectores}
                       <option value="{$sectores[sector].sector}">{$sectores[sector].sector}</option>
               {/section}
         </select>
        <p>Sector del cliente</p>
        <label onclick="javascript:anadir('divAnadir')">Nuevo sector</label>
</div>
                     
 <div id="divAnadir" style="display: none;">
        Nuevo sector:<input type="text" id="nuevo_sector" name="nuevo_sector" value=""/>
         <input onclick="javascript:nuevoSector()" type="button" value="Añadir nuevo sector" />
</div>
</form>
Luego en algo.php
Código:
echo $_POST['cliente_sector]
Y me aparece vacio. No termino de entender lo que me quieres decir.

Gracias
  #4 (permalink)  
Antiguo 24/04/2013, 12:58
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Como añado datos a un combo con javaSrcipt y lo recogo con POST

exacto, pero veo que la petición que realizas es GET, no POST, revisa el código de AJAX, o en su defecto has en PHP un :

var_dump($_POST);

para ver que te llega
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 24/04/2013, 15:19
 
Fecha de Ingreso: octubre-2009
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Como añado datos a un combo con javaSrcipt y lo recogo con POST

En javascript hago la llamada al script por get eso me funciona perfectamente y me añade el campo al combo. El problema es luego al hacer el submit del formulario la variable $_POST['cliente_sector'] me llega vacía ya he hecho un print_r($_POST) y por eso lo se.

JavaScript hace lo que tiene que hacer que es añadirme un nuevo option al combo, el problema es el submit del formulario que no me recoge el valor del combo si este es el nuevo campo que he creado por JS.

Última edición por monchyrcg; 25/04/2013 a las 01:21
  #6 (permalink)  
Antiguo 25/04/2013, 02:47
 
Fecha de Ingreso: octubre-2009
Mensajes: 10
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Como añado datos a un combo con javaSrcipt y lo recogo con POST

A través de una funcion js he recargado la página.

Muchas gracias a todos.

Etiquetas: ajax, combo, funcion, html, input, php, post, select
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 22:51.