2012-06-12 73 views
0

我的頁面內有一個輸入(「模型」),其中包含一個datalist屬性和一個選擇菜單(「品牌」)。當用戶從模型中選擇數據列表中的一個選項時,它將動態更改品牌選擇菜單中的選項值。模型和品牌中的兩個選項值均從數據庫調用。這是我到目前爲止的代碼;通過ajax分割輸出值,

<input type="text" name="type" id="type" list="datalist1" onchange="fw();"/> 

    <datalist id="datalist1"> 

     <?php 

     $query9 = "SELECT DISTINCT model FROM server ORDER BY model ASC"; 
     $result9 = mysql_query($query9); 

     while($row9 = mysql_fetch_assoc($result9)) 
     { 

     echo '<option value="'.$row9['model'].'">'; 

    }    ?> 

    </datalist> 

<select name="brand" id="test2"><option value="">-- Select Brand--</option></select> 

腳本;

<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
function fw() 
{ 
var selname = $("#type").val(); 
$.ajax({ url: "getBrand.php", 

    data: {"brand":brand}, 

    type: 'post', 

    success: function(output) {  

    document.getElementById('test2').options.length = 0; 

    document.getElementById('test2').options[0]=new Option(output,output); 
     // document.getElementById('test2').options[1]=new Option(output,output);  
    } 

}); 
} 

</script> 

getBrand.php

<?php 
define('DB_HOST1', 'localhost'); 
define('DB_NAME1', 'standby'); 
define('DB_USER1', 'root'); 
define('DB_PASS1', ''); 
$link = mysql_connect(DB_HOST1, DB_USER1, DB_PASS1); 
if(!$link) 
{ 
    exit('Cannot connect to server "' . DB_HOST1 . '"'); 
} 

mysql_select_db(DB_NAME1, $link) or die('Cannot use database "' . DB_NAME1 . '"'); 


if (isset($_POST['brand'])) { 
$selname = $_POST['brand']; 

$query = "SELECT * FROM server WHERE model='$brand'"; 
$res = mysql_query($query); 
$aBrand= array(); 
while($rows = mysql_fetch_assoc($res)) { 

$brand= $rows['brand']; 

$aBrand[] = $brand; 

echo $aBrand[0]; 
echo $aBrand[1]; 
} 

} ?> 

從我所編碼的,我已成功改變選擇菜單動態,但有一個問題。當有更多的數據從getBrand.php中調用時,選擇菜單中的「輸出」會將所有數據組合成一行。例如,如果數據是「M3000」和「M4000」,它將顯示爲「M3000M4000」。現在,我該如何分割它並將其作爲正常的選擇選項?

我還在學習Javascript,希望這裏有人能指導我。

注:該代碼只適用於Firefox,因爲DataList控件屬性的

回答

1

從getBrand.php發送您的數據爲

echo implode(「;」,$ aBrand);

這將產生像M3000的字符串; M4000,M5000,M6000

,並在Java腳本代碼打破使用此代碼串入陣。

StrArr = Str.split(「;」);

這裏'Str'是你的輸出給出的getBrand.php,'StrArr'是包含你的品牌的數組。

+0

謝謝!完美的作品.. –

1

字符串中的JavaScript添加特殊字符返回形式PHP

PHP

elementcount=0; 
    while($row9 = mysql_fetch_assoc($result9)) 
    { 
    if(elementcount>0) 
    echo '$<option value="'.$row9['model'].'">';//place a $ sign in start or you can for any special character 
    else 
    echo '<option value="'.$row9['model'].'">'; 

} 

現在

success: function(output) {  
    output = output.split("$"); 
    document.getElementById('test2').options.length = 0; 
    //here now loop through the elements and add 
    for(var i=0,i<output.length-1) 
    document.getElementById('test2').options[0]=new Option(output[i],output[i]); 
     // document.getElementById('test2').options[1]=new Option(output,output);  
    } 
+0

謝謝你的回答..它的作品也是 –