2011-02-03 64 views
0

我是小白,但會很樂意採取一些棍子,如果你能幫我找到答案;)使用下拉菜單更改div的內容,JavaScript和PHP

我的類別在一個列表數組$ cat_array。 我想構建一個選擇下拉列表,當我選擇其中一個選項時,另一個變量被傳遞給一個函數。

這是我到目前爲止有: 在主文件(的index.php),我調用一個函數:

makechoice($cat_array); 

這是指該功能,包含文件中:

function makechoice($cat_array) { 
$dbz = new db(); 
$sim = new simple(); 
echo '<div class="choose-section">'; 
    echo '<select class="selbox" onchange="categoryAjaxData(\'facebook\',\'/includes/fancount.php\',this.value);">'; 
     foreach($cat_array as $cat) { 
      echo('<option value="'.$cat[0].'">'.$cat[1].'</option>'); 
     } 
    echo '</select>'; 
    echo 'Choose a section'; 
    echo '</div>'; 
    echo '<div id="facebook"><div class="facebook-midcut">',showfans($djnames, $djids, $djurl),'</div><div class="l-botcut"></div></div>'; 
} 

In includes/fancount.php,我基本上有很多不同的變量,我想通過showfans函數。

例如$ barnames,$ barids,$ barurl & $ restaurantname,$ restaurantids,$ restauranturl

showfans函數使用這些變量來顯示一些關於它們的數據。

這是我的javascript代碼:

function categoryAjaxData(div,str,value) 
{ 
    var url = str+'?catid='+value; 
    ajaxData(div,url); 
} 

function ajaxData(div,str) 
    { 
     xmlHttp=GetXmlHttpObject(); 
     document.getElementById(div).innerHTML='<center><img src="images/loader.gif"></center>';   
     if(xmlHttp==null) 
     { 
      alert("Browser does not support HTTP Request") 
      return 
     } 
      var url = str; 
      xmlHttp.onreadystatechange = function(){ DescriptionstateChanged(div); }; 
      xmlHttp.open("GET",url,true); 
      xmlHttp.send(null); 
    } 

function DescriptionstateChanged(div) 
{ 
    if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") 
    { 
     document.getElementById(div).innerHTML=xmlHttp.responseText; 
    } 
} 

的時刻: 當前Facebook的DIV重新加載內容,我可以看到裝載機 - 但我堅持着如何鏈接選擇的選項選擇下拉菜單來更改showfans()函數中的變量。

E.g. 我想「酒吧」,在下拉菜單中顯示:

echo '<div id="facebook"><div class="facebook-midcut">',showfans($barnames, $barids, $barurl),'</div><div class="l-botcut"></div></div>'; 

我想要的「餐廳」,在下拉菜單中顯示:

echo '<div id="facebook"><div class="facebook-midcut">',showfans($restaurantnames, $restaurantids, $restauranturl),'</div><div class="l-botcut"></div></div>'; 

我希望幫助!感謝提前:)

UPDATE:

至於fancount.php,我一直在尋找各種不同的選擇 - 但我似乎無法得到其中的任何工作!

欲從下拉的值傳遞到一個邏輯,這樣取決於,某些變量被showfans被使用()選擇的varlue和輸出代碼類似於此爲變量的各種組合:

echo'',showfans($ restaurantnames,$ restaurantids,$ restauranturl),'';

回答

1

n00b!好吧,不要忘了:-)

您正在將'facebook-midcut'傳遞給您的categoryAjaxData()函數。最終的DOM查詢是否知道你是指帶有id的div還是帶有該類的div?如果你使用像jquery這樣的libray,它不知道你的意思是哪個節點而沒有進一步的分類。我猜想你正試圖讓這個班級與你的班級一樣,所以你不能使用getElementById()

您可能還需要在'includes/fancount.php'的開頭添加一個斜槓。在此處添加斜線表示路徑將從您的網站的文檔根目錄引用,而不是從您網站中的當前位置引用。

你使用某種類型的js庫嗎?看到你的ajaxData函數會很有用,因爲問題很可能在那裏。

快速提示給你。學習何時在PHP中使用單引號和雙引號。它會使你的代碼更簡單,更快。 echo "<div id=\"facebook-midcut\">";可能會寫爲echo '<div id="facebook-midcut">';

我會再檢查一下,看看您是否已更新您的帖子並提供我所要求的信息,然後我可以給您更多的幫助。

UPDATE:

我承擔的功能DescriptionstateChanged(div)是在div的實際更新發生,但你永遠傳遞XMLHTTP對象。這是否意味着成爲一個全球性的對象?如果不是,那麼你肯定需要將它傳遞給DescriptionstateChanged()函數,我建議它不應該是一個全局對象。如果DescriptionstateChanged()函數是div的實際更新發生的地方,你可以發佈這個函數嗎?

+0

與ajaxData更新功能:) – 2011-02-03 17:01:40

+0

我也編輯過回聲''div id =「facebook-midcut」>' – 2011-02-03 17:09:51

0

你可能想改變這一點:

echo '<select class="selbox" onchange="categoryAjaxData("facebook-midcut","/includes/fancount.php",this.value);">'; 

與此:

echo '<select class="selbox" onchange="categoryAjaxData(\'facebook-midcut\',\'/includes/fancount.php\',this.value);">'; 

注意如何代碼的輸出將是無效的HTML:

<select class="selbox" onchange="categoryAjaxData("facebook-midcut","/includes/fancount.php",this.value);"> 
相關問題