2011-09-03 61 views
0

我的表單提交,因爲它是一個簡單的onchange事件來處理URL重定向和表單提交()

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> 

我試圖提交表單,並重定向到URL。我想知道這是否可能。我試過實現一個jQuery $ .change事件,但它沒有在表單提交之前觸發()

如果任何人都可以提供幫助,那太棒了。謝謝!

回答

0

只要做到這一點在PHP的: header('Location: ' . the_url_to_redirect);

+0

你能給我一個示例代碼的例子嗎?動態 –

+0

在發送任何輸出之前必須調用記住標頭(),你需要調用這個函數。 – xdazz

0

你的提交函數在哪裏?

你可以嘗試這樣的

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

它應該工作

+0

onchange =「submit();」 工作得很好,這不是問題。 –

0

您還沒有表現出你的提交功能的做法,但如果它不正常的形式提交(不AJAX),那麼你就需要稍後重定向。

通常情況下,您需要正常提交表單,然後在下一頁加載時,該頁面會設置一個'位置'標題,告訴瀏覽器重定向。

例如,在任何PHP代碼運行時的表單提交,則需要通過執行此操作重定向:

header('Location', 'http://mysite.com/page-to-redirect-to.php'); 
+0

action =「<?php echo $ PHP_SELF;?>」 應該解釋它的作用。它提交表單,其中包含選項 –

0

所有你需要的是「jQuery的表格插件」

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

使用此插件,表單將提交到「操作」地址而不會離開頁面。完成後,您可以使用回調函數進行重定向。

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

如果你需要這個平變化,你可以用這一個:

<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

包含的值用於單個表單提交(#FORM_ID),但正如您所看到的,我需要動態的東西。例如#OPT_SEL1,#OPT_SEL2等。不只是一個提交。 –

0
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{ 

} 

}

這個工作對我來說:),歡呼。