javascript / php: cambie los campos de texto según el cambio de selección

Estoy tratando de cambiar varios campos de texto cada vez que selecciono una nueva opción en mi opción de selección. Este es el código que tengo actualmente, ¿alguna idea de dónde me estoy equivocando? Gracias.

        <script type="text/javascript">
            $("#combo").change(function() {
            var value = $(this).val();
            $.get(document, {type: value});
            });
        </script>


        <td class="bold"><label for='addType'>Select Type to Add : </label>
            <select name="addType" id="combo">
                <option value="book">Book</option>
                <option value="author">Author</option>
                <option value ="publisher">Publisher</option>
                <option value="customer">Customer</option>
            </select>
        <?php
            $type['type'] = $_GET['type'];
            if ($type['type'] == 'author') {
                print "test";
            }
        ?>

preguntado el 03 de mayo de 12 a las 22:05

pero no ingresó esto en un solo archivo? ¿Tiene la parte php separada de su html/javascript? -

Está en un archivo, ¿debo incluir todo en las etiquetas php? -

Su get .get() no tiene función de devolución de llamada. -

3 Respuestas

La función $.get debería verse así:

 $.get("php_page.php", 
       {type: value},
       function(data) {
             $("#response").html(data)
      );

Despues de ti </select> coloque un div con id "respuesta" que mostrará su valor devuelto:

 <div id="response">
 </div>

Ahora todo lo que necesita hacer es crear una segunda página en el mismo directorio ("php_page.php") que manejará su solicitud $.get AJAX:

<?php
      echo $_GET['type'];
?>

Y en caso de que no lo sepa, PHP es un lenguaje del lado del servidor. Esto significa que una vez que se carga la página, el PHP ya ha hecho su trabajo. Entonces, si necesita usar los poderes especiales de PHP después de que se haya cargado la página, para eso está AJAX.

contestado el 03 de mayo de 12 a las 22:05

Gracias, veré si puedo resolverlo desde aquí! - maullidos

Como se mencionó anteriormente, el $.ajax La función suele ser el estándar para las llamadas ajax, por lo que podría usar eso en lugar de $.get - el_baron_rojo

Estás haciendo esto el camino completamente equivocado!! Lea el manual sobre ajax en jQuery.

Solo por ayudarte a iniciar tu proyecto:

Debe separar la estructura básica de la respuesta que desea obtener de su archivo php. por favor mira esto DEMO

La parte HTML es:

<select name="addType" id="combo">
    <option value="book">Book</option>
    <option value="author">Author</option>
    <option value ="publisher">Publisher</option>
    <option value="customer">Customer</option>
</select>
<div>Response: <span id="selection"></span></div>

¡Esto también podría llenarse con PHP pero no es la respuesta!

El JavaScript es:

$("#combo").change(function() {
    $.ajax({
        url: "/echo/html/",
        type: "POST",
        data: {"html":"Yeah: "+$(this).val()+" is cool!"},
        success: function(data) {
            $("#selection").html(data);
        }
    });
});​

Sería bueno si pusieras esto en un archivo extra.

por último pero no menos importante el "archivo PHP" especificado con la url /echo/html hace lo siguiente:

<?php
  echo $_POST["html"];
?>

Espero que esto ayude.

contestado el 03 de mayo de 12 a las 22:05

¡Gracias! Sin embargo, una pregunta en la URL. Si tengo este archivo y php_page.php en el mismo nivel, la URL sería simplemente "php_page.php", ¿verdad? - maullidos

¡Sí! Este 'echo/html' solo es necesario para la demostración jsfiddle, porque no puede actualizar un archivo php allí :) - neysor

En primer lugar, esta sección:

<?php
    $type['type'] = $_GET['type'];
    if ($type['type'] == 'author') {
        print "test";
}?>

solo se imprimirá cuando la página se cargue por primera vez, y solo si type=xxx está en la cadena de consulta de URL. No puede ejecutar PHP en la página en sí después de que se carga, ya que el código es del lado del servidor

para la parte jquery, intente:

$(document).ready(
    function(){
        $('#combo').change(function(){doAjax();});
    }
);
function doAjax(){
    $.get(
        'url', //i think jquery defaults to self if not url is given but you can also use <?php echo $_SERVER['PHP_SELF'];?>
        {'type' : $('#combo').val()},
        function(data){
                // what should the ajax call do with the response data?
        },
        "html"
    );
}

también debe hacer un div para colocar los datos devueltos con .html(), es mucho más fácil que tratar de agregar la respuesta al final de lo que sea que fue el último elemento encima.

contestado el 03 de mayo de 12 a las 22:05

Intentaré implementar esto si no puedo resolver el otro ejemplo. ¡Gracias! - maullidos

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.