2016-05-11 161 views
0

好的,所以我有這個函數在PHP中獲得一個屬性並返回一個數組。事情是這樣的:用php動態改變選擇選項

function getProvinces($countryID){ 
return arrayWithProvinces($countryID);} 

每次家長選擇的變化,功能getProvinces()應該用新的標識來執行,並且arrayWithProvince應包括在子選項中進行選擇。

我正在使用jquery來處理事件,因爲我在某處發現。我需要做這樣的事情。

  $("#selectCountry").change(function() { 

       var parent = $(this).val(); //get option value from parent 
       var prov = <?php echo json_encode($pagina->getProvinces(<PARENT>)); ?>; 
       list(prov); 

我的問題是,我不知道如何告訴getProvinces($ countryID)php函數是父項的新值。

在此先感謝。

+0

我認爲你應該使用ajax,而不是php。 – asurbernardo

+1

PHP代碼只在服務器端評估一次,並將生成的HTML發送給客戶端。就像@asurbernardo所說的,你應該使用AJAX請求來調用服務器。 –

回答

0

據我所知,如果不重新加載整個頁面(我的意思是PHP應該重新編譯並將它傳遞給客戶端),則無法執行此功能。

您應該只爲此目的使用JavaScript。將你的ArrayList存儲在JS代碼中,並在提交表單時驗證它(只是爲了確保)。

0

您需要向服務器發出Ajax請求。

這樣看待:您的Javascript/jQuery在客戶端(Web瀏覽器)上運行,並且您的PHP在您的Web服務器上運行。

因此,爲了在瀏覽器(jQuery)和服務器(PHP)之間進行通信,您需要發出Ajax請求。 jQuery有一個你可以使用的ajax函數,你最好的辦法就是對這個主題進行一些研究,因爲Ajax是你隨時會用到的東西,並且理解它的工作方式至關重要。

+0

對。我會找到一些其他的方式來做到這一點,謝謝。 –

1

你應該用一個例子jQuery的ajax功能。當選擇與ID #parent_select改變你打電話給你的PHP腳本,以刷新動態content.Below你的頁面的一部分使用JavaScript爲你追加返回的數據(孩子的html在示例中選擇)在你想要的div中。

的Javascript部分將是這樣的:

$("#parent_select").change(function() { 

$.ajax({ 
    url: "your_script.php?cid="+$(this).val(), 
     success: function(html){ 
     $("#child_select_container").append(html); 
     } 
    }); 
}); 

而且your_script.php代碼看起來是這樣的:

<?php 
function getProvinces($countryID){ 
return arrayWithProvinces($countryID);} 

$countryID=(int)$_GET['cid']; 

$provinces=getProvinces($countryID); 

echo '<select id="child_select">'; 
foreach($provinces as $key=>$province){ 
echo '<option id="'.$key.'">'.$province.'</option>'; 
} 
echo '</select>; 

我還沒有測試的example.It僅僅是一個基本的如何example.You應該能夠從這裏工作。但如果您有任何問題,請告訴我。