2014-11-03 18 views
0

修改:它聞起來像AJAX,但我不知道

大家好,感謝您的所有答覆。我一直在摔跤,試圖將代碼放入我的頁面,但我仍然沒有運氣。雖然擺弄​​我看不出爲什麼像下面的代碼不會工作 - 我不能得到這個工作或者不介意你(!)。如果這是不可能的,我希望有人能拍下來的想法救我浪費時間試圖做到這一點:

<form name='Names' role='form' action='#' method='get' onchange='this.form.submit()'> 
    <select name="FirstName"> 
     <option value="1">FirstName#1</option> 
    </select> 
    <select name="LastName"> 
     <option value="1">LastName#1</option> 
    </select> 
</form> 

...可能我再拿起這些選擇在$_GET['FirstName']$_GET['LastName'],並將它們傳遞到我的mysqli_query()生成表?


爲了防止我的困惑的任何機會,傳播我首先要說明什麼,我試圖做...我想有一組我可以篩選下拉列表的表中的網頁 - 類似到Excel過濾器。如果你知道一個更好的方式比我在下面嘗試的方式 - 請開啓我!

現在,描述到目前爲止,我已經取得了最大的進步:

我有以下腳本(從W3Schools的複製直了:

<script> 
    function showUser(str) { 
     if (str=="") { 
     document.getElementById("txtHint").innerHTML=""; 
     return; 
     } 
     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("txtHint").innerHTML=xmlhttp.responseText; 
     } 
     } 
     xmlhttp.open("GET","entry_table.php?q="+str,true); 
     xmlhttp.send(); 
    } 
</script> 

以上腳本是從以下下拉叫其中使用PHP填充而從SQL查詢循環:

<form> 
    <select name="Name" onchange="showUser(this.value)"> 
     <option value="1">User#1</option> 
    </select> 
</form> 

的$ q值然後被傳遞給一個PHP頁面生成與SQL查詢後顯示錶:

WHERE UserID="$q"

這工作,但我擔心這似乎是做這件事的長篇大論方式 - 特別是如果我嘗試和擴大查詢包括6-7下拉其他過濾器。

由於提前, 本

+0

它不僅聞起來ajax,但它也嚐起來就像是ajax。它是ajax和no,它不是一個「長」的方法,它只是ajax,只要你不使用jQuery,這可能是這樣做的方式。不過要注意sql注入,在執行查詢之前清理php腳本中的值。 – briosheje 2014-11-03 10:08:03

+0

爲什麼他不應該使用jQuery? – 2014-11-03 10:10:30

+1

@DavidJones:我說他不應該?我只是說過,只要他不使用它,它可能是要走的路。我的意思是:如果他不使用jQuery,這可能是他能做的最好的,否則,通過使用jQuery,它會更短:P – briosheje 2014-11-03 10:11:25

回答

0

你可以去一個回調函數。

function getData(url, callback) 
{ 
    if (window.XMLHttpRequest) 
    { 
     //IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 
    else 
    { //IE6, IE5 
     xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
     { 
      callback(xmlhttp.responseText); 
     } 
    } 

    xmlhttp.open("GET", url, true); 
    xmlhttp.send(); 
} 

然後再做一個AJAX調用是這樣的:

getData("entry_table.php?q="+str, function(data) 
{ 
    document.getElementById("txtHint").innerHTML=data; 
}); 

外部函數

function doStuff(value) { 
    getData("entry_table.php?q="+value, function(data) 
    { 
     document.getElementById("txtHint").innerHTML=data; 
    }); 
} 

,然後選擇將

<select onchange="doStuff(this.value)"> 
+0

感謝Seunhaab--我是否認爲回調函數會將$ q值傳遞迴同一頁來生成表? – Bendy 2014-11-03 13:49:15

+0

它會將從entry_table得到的任何結果作爲參數傳遞迴回函數,即「函數(數據)」。然後,您可以將其作爲該功能中的數據進行訪問。 – Seunhaab 2014-11-03 15:08:03

+0

它最終爲你工作? – Seunhaab 2014-11-04 15:42:26

相關問題