2013-07-11 33 views
1

我有一個彈出窗體,用於選擇表中的項目。按順序,每行的表數據爲:(複選框供選擇),模式名稱和表名。使用AJAX發送Javascript字符串到PHP文件,然後從文件返回數組

這裏是用於獲取數據的上市查詢:

select table_schema, table_name 
from information_schema.tables 
order by table_schema, table_name 

如何,我在創建表上市:

<?php 
    $db = new mssql($_SESSION['serv'],$_POST['database'],$_SESSION['usr_n'],$_SESSION['pa ss']); 

    $db->query(" 
     select table_name, table_schema 
     from information_schema.tables 
     order by table_schema, table_name 
    "); 

    $tables = $db->getArray(); 

    foreach($tables as $table) 
    { 
     print "<tr>"; 
     print "<td><input type='checkbox' name='$table[TABLE_NAME]' class='checkbox' /></td>"; //Print Checkbox 
     print "<td style='padding: 5px; text-align: center;'>$table[TABLE_SCHEMA]</td>"; //Print Table Schema 
     print "<td>$table[TABLE_NAME]</td>"; //Print Table Name 
     print "<td><input type='hidden' name='$table[TABLE_NAME]_schema' value='$table[TABLE_SCHEMA]'></td>"; 
     print "</tr>"; 
    } 
?> 

我想添加過濾器。我想放置從上面的查詢返回的所有不同模式的下拉列表。我做這個使用下面的:

<option value="%" selected>All Schemas</option> 
<?php 
    $db = new mssql($_SESSION['serv'], $_POST['database'], $_SESSION['usr_n'],$_SESSION['pass']); 
    $db->query(" 
     select distinct table_schema 
     from information_schema.tables 
     order by table_schema 
    "); 
    $schemas = $db->getArray(); 
    foreach($schemas as $schema) { 
     ?> 
     <option value="<?php echo $schema['TABLE_SCHEMA'];?>"><?php echo $schema['TABLE_SCHEMA']?></option> 
     <?php 
    } 
?> 

這是正常工作,當我訪問下拉在Javascript中,我與警報顯示,當得到正確的值。

我需要做的是當用戶從列表中選擇不同的模式(onchange)時,表格將更新,只顯示具有指定模式的表格。我一直試圖用我有限的Javascript和PHP的知識來解決這個問題,但是在搜索了幾個相關的問題之後,我發現我需要使用AJAX。我對此知之甚少,並沒有在網上找到教程非常有幫助。

所以我現在堅持的是將下拉的值發送到PHP文件,返回一個數組,然後將其返回給Javascript。然後,我會從顯示錶中刪除所有的行,並在新的值從我傳遞的陣列添加

這裏是我到目前爲止有:

function updateList() { 
    var sch = document.getElementById("schList"); 
    var xmlhttp; 
    if(window.XMLHttpRequest) { 
     xmlhttp=new XMLHttpRequest(); 
    } else { 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() { 
     if(xmlhttp.readyState==4 && xmlhttp.status==200) { 
     var table = xmlhttp.response 
     } 
    } 
} 

在這裏,我沒有線索。我讀過一些名爲JSON的東西,並且你可以返回對象和數組。我如何將模式名稱發送到文件中,以及如何從文件中返回數組?

感謝您的幫助!

+4

@ s_qw23請不要鏈接到W3Schools的,他們是邪惡的。 –

回答

0

如果你不是那個知識淵博的人不試圖通過ajax做到這一點。只需使用url var重新加載頁面,告訴頁面要加載的內容即。 table.php?id = users

一旦這個工作正常,沒有ajax你可以添加該功能,如果有必要。

如果你想知道的JS的重載見:http://webdesign.about.com/od/examples/l/blfaqddredirect.htm

+0

我不能這樣想。網站設置的方式有一個主頁面,當你點擊頁面上的一個按鈕時,會出現一個窗口(我能告訴的Javascript),然後你可以選擇你的選項。通過刷新頁面(彈出頁面),我從屏幕上刪除主頁面,而不是彈出一個小窗口,彈出窗口就是整個屏幕。我認爲AJAX是唯一的出路:(。感謝您的迴應! – Tory

+0

您可以刷新/重定向彈出頁面,而不影響主頁面。 – hendr1x

相關問題