我有一個多選框的HTML表單。我無法弄清楚如何通過POST請求將值發送到我的PHP應用程序與AJAX。如果我使用GET請求並使用單個選擇框,但在使用多個選擇框時不起作用,那麼它工作得很好。這個想法是讓用戶保持控制(或者用mac命令)並選擇一個或多個類別。取決於選擇的類別將決定使用AJAX顯示哪些其他表單選項。該選擇框看起來是這樣的:通過POST請求通過AJAX發送HTML表單多個<select>框?
編輯:解決
<select multiple name="categories[]" onclick="sendCategories(this)">
<option value="0">Category 1</option>
<option value="1">Category 2</option>
<option value="2">Category 3</option>
</select>
我的JavaScript函數如下所示:
function sendCategories(sel){
if (window.XMLHttpRequest)
{
xmlhttp=new XMLHttpRequest();
}
else
{
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("my_div").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("POST","http://www.mysite.com/update_categories.php",true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
var values = $(sel).serialize();
xmlhttp.send(values);
}
嗯......絕對會變暖。似乎這會工作,但由於某種原因,當我嘗試檢索服務器端的我的PHP應用程序的發佈請求,我仍然沒有得到任何東西。我試圖檢查這樣的值:print_r($ _ POST ['values']) – DJSK
@ kyzer1978太棒了,很高興你越來越近!所以,我不確定你爲什麼使用'$ _POST ['values']' - 如果你看jsFiddle中的'alert',你會注意到querystring類似於:'categories [] = asdf&categories [] = FDSA&類別[] = aaa'。所以當訪問'$ _POST'時,應該使用的「鍵」是「categories []」。這意味着,你應該嘗試'$ _POST ['categories []']'。那有意義嗎?試試看,讓我知道會發生什麼。如果這不起作用,請嘗試'$ _POST ['categories']'。 'values'只是Javascript變量的名稱,與發送到服務器的內容沒有任何關係 – Ian
@ kyzer1978它與「發送給服務器的內容無關」的原因是因爲我模擬了當多重'通常會提交'