2015-06-21 21 views
0

我有一個html表單將數據發佈到一個php文件進行處理,在這個表單上有一個動態生成的組合框,它是從使用javascript的php文件生成的。組合框在加載頁面時顯示並正常工作,但當表單提交時,此框中的值未發佈。html表單不能從javascript和php發佈

的JavaScript函數就是

function showUser(str) { 
    if (str == "") { 
     document.getElementById("selSubCat").innerHTML = ""; 
     return; 
    } else { 
     if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
     } else { 
      // code for IE6, IE5 
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange = function() { 
      if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
       document.getElementById("selSubCat").innerHTML = xmlhttp.responseText; 
       } 
     } 
     xmlhttp.open("GET","getSubCats.php?Cat="+str,true); 
     xmlhttp.send(); 
    } 
} 

的HTML是

<td >Category:</td> 
     <td > 
     <select name="Cats" onchange="showUser(this.value)" ><?  

     $qryCats="SELECT * FROM tblCategories"; 
     $resCats=mysql_query($qryCats,$dbMain); 
     while($rowCats = mysql_fetch_array($resCats)){ 
     echo "<option value='".$rowCats['Name']."'>".$rowCats['Name']."</option>"; 
     } 
    ?> 
    </select> 

    </td> 
    </tr> 
    <tr> 
    <td >Sub Category:</td> 

    <td id="selSubCat"> 
    </td> 
    </tr> 

而且PHP文件:

<? 
    include("dbconfig.php"); 
    $cat=$_GET['Cat']; 

    $qryCats="SELECT * FROM tblSubCats WHERE Parent='" .$cat. "'"; 
     $resCats=mysql_query($qryCats,$dbMain); 
     if ($numrow=mysql_num_rows($resCats)>0){ 
      echo "<select name='subCats'>"; 
     while($rowCats = mysql_fetch_array($resCats)){ 
     echo "<option value='" .$rowCats['Name']. "'>" .$rowCats['Name']. "</option>"; 
     } 

     echo "</select>"; 
     } 
     else{ 
      echo " There are no sub categories "; 
     } 
    ?> 

任何建議可以理解的,我想不通爲什麼除子類別以外的所有內容均已發佈

+0

**危險**:您正在使用[an **過時的**數據庫API](http://stackoverflow.com/q/12859942/19068),並應使用[現代替換](http:// php.net/manual/en/mysqlinfo.api.choosing.php)。你很容易受到[SQL注入攻擊](http://bobby-tables.com/)**現代的API會使它更容易[防禦](http://stackoverflow.com/questions/60174/最好的方式,以防止SQL注入在PHP)自己從。 – Quentin

+0

感謝您的建議昆汀,我計劃改變一切mysqli或PDO –

回答

1

檢查出name屬性。在HTMLCats,但在你的代碼中使用$_GET['Cat']; 應該

$cat=$_GET['Cats']; 
+0

嗨,PHP文件是從javascript獲取Cat變量不是HTML選擇 –

+0

我沒有發現任何代碼錯誤。你有沒有看到控制檯的任何錯誤? – Abhinav

+0

錯誤日誌中沒有錯誤,它張貼貓選擇確定,但不會從添加的php代碼中發佈一個subCats –

0

解決了,我有html頁面,其形式在裏面桌子上。我交換了標籤,以便表格在表單內,而動態字段發佈的很好。不知道爲什麼在表格中使用表格會阻止這些表格發佈,但至少現在可以使用。