Tengo el envío del formulario porque es un simple

onchange="submit();"

                            <div class="cities">Select City <form method="post" action="<?php echo $PHP_SELF;?>" style="float:right;"><select name="city_select" id="city_select" onchange="submit();"><option>-----</option>
                        <option value="Beijing" <?php if($_SESSION['city_selected'] == 'Beijing') { echo 'selected=selected';} else { echo ''; }?> >Beijing</option>
                        <option value="Shanghai" <?php if($_SESSION['city_selected'] == 'Shanghai') { echo 'selected=selected';} else { echo ''; }?> >Shanghai</option>
                        <option value="Guangzhou" <?php if($_SESSION['city_selected'] == 'Guangzhou') { echo 'selected=selected';} else { echo ''; }?> >Guangzhou</option>
                        <option value="Manila" <?php if($_SESSION['city_selected'] == 'Manila') { echo 'selected=selected';} else { echo ''; }?> >Manila</option>
                        <option value="HongKong" <?php if($_SESSION['city_selected'] == 'HongKong') { echo 'selected=selected';} else { echo ''; }?> >Hong Kong</option>
                        <option value="Tokyo" <?php if($_SESSION['city_selected'] == 'Tokyo') { echo 'selected=selected';} else { echo ''; }?> >Tokyo</option>
                        <option value="Seoul" <?php if($_SESSION['city_selected'] == 'Seoul') { echo 'selected=selected';} else { echo ''; }?> >Seoul</option>
                        <option value="Taipai" <?php if($_SESSION['city_selected'] == 'Taipai') { echo 'selected=selected';} else { echo ''; }?> >Taipai</option>
                        </select></form>
                        <div style="clear:both;"></div>
                        </div>

Estoy tratando de enviar el formulario y también redirigir a una url. Me preguntaba si esto era posible. Intenté implementar un evento jquery $ .change pero no se activó antes de que el formulario submit ()

Si alguien pudiera ayudar, eso sería fantástico. ¡Gracias!

0
robertparkerx 3 sep. 2011 a las 05:10

5 respuestas

La mejor respuesta

Solo hazlo en php por: header('Location: ' . the_url_to_redirect);

0
xdazz 3 sep. 2011 a las 01:32

Todo lo que necesitas es "Complemento de formulario Jquery"

http://jquery.malsup.com/form/#ajaxForm

Con este complemento, el formulario se envía a la dirección de 'acción' sin salir de la página. Cuando termine, puede redirigir con la función de devolución de llamada.

<script>
    $(document).ready(function(){
        $('#FORM_ID').ajaxForm(function(data) {
            window.location="http://www.REDIRECT_URL.com/"; 
        });                          
    });
</script>

Si necesita este cambio, puede usar este:

<script>
    $(document).ready(function(){   

        $('#FORM_ID').ajaxForm(function(data) {
            window.location="http://www.REDIRECT_URL.com/"; 
        });  

        $('#city_select').change(function(){
            $('#FORM_ID').trigger('submit');
        });

    });
</script>
0
Bahadır Birsöz 3 sep. 2011 a las 01:32

¿Dónde está su función de envío?

¿Puedes intentarlo así?

<select name="city_select" id="city_select" onchange="this.form.submit();">

Deberia de funcionar

0
AjayR 3 sep. 2011 a las 01:24
if(isset($_POST['city_select'])) {

$_SESSION['city_selected'] = $_POST['city_select'];

if($_POST['city_select'] == "Beijing") {
    header("Location: /city-beijing/");
}
if($_POST['city_select'] == "Shanghai") {
    header("Location: /city-shanghai/");
}
if($_POST['city_select'] == "Guangzhou") {
    header("Location: /city-guangzhou/");
}
if($_POST['city_select'] == "Manila") {
    header("Location: /city-manila/");
}
if($_POST['city_select'] == "HongKong") {
    header("Location: /city-hong-kong/");
}
if($_POST['city_select'] == "Tokyo") {
    header("Location: /city-tokyo/");
}
if($_POST['city_select'] == "Seoul") {
    header("Location: /city-seoul/");
}
if($_POST['city_select'] == "Taipai") {
    header("Location: /city-taipai/");
}

else{

}

}

Esto funcionó para mí :), salud.

0
robertparkerx 7 sep. 2011 a las 01:00

No ha mostrado lo que hace su función de envío, pero si realiza un envío de formulario normal (no AJAX), deberá redirigir más adelante.

Normalmente, debería enviar su formulario normalmente, y luego, cuando se cargue la página siguiente, esa página establecería un encabezado de 'Ubicación' que le indicaría al navegador que redirija.

Por ejemplo, en cualquier código PHP que se ejecute cuando se envíe el formulario, deberá redirigirlo haciendo esto:

header('Location', 'http://mysite.com/page-to-redirect-to.php');
0
loganfsmyth 3 sep. 2011 a las 01:27