我正在使用jQuery/JS/Ajax腳本從我的數據庫動態填充SELECT框,每個後續的SELECT框都是基於前一個SELECT填充的。使用jQuery的動態鏈接選擇框
例如,有人從我的第一個SELECT中選擇'England',然後填充下一個SELECT在英格蘭等城鎮。
我遇到的麻煩是獲取第二個SELECT函數來識別變量。這是一個很大的代碼,所以我不想粘貼所有,但...這是填充在頁面加載的第一個選擇框中的第一個函數:
function getTierOne()
{
$tblname = $_SESSION['country'];
$result = mysql_query("SELECT DISTINCT county FROM $tblname ORDER BY county")
or die(mysql_error());
while($tier = mysql_fetch_array($result))
{
echo '<option value="'.$tier['county'].'">'.$tier['county'].'</option>';
}
}
這是罰款,$ tblname是發佈$ _SESSION變量包含用戶國家,obvs。
問題是這樣的第一選擇框 '的onblur',第二個選擇框被提升使用這個JS函數和PHP調用:
$(document).ready(function()
{
$('#wait_1').hide();
$('#drop_1').change(function()
{
$('#wait_1').show();
$('#result_1').hide();
$.get("func.php",
{
func: "drop_1",
drop_var: $('#drop_1').val()
},
function(response)
{
$('#result_1').fadeOut();
setTimeout("finishAjax('result_1', '"+escape(response)+"')", 400);
});
return false;
});
});
...
if (isset($_GET['func'])&& $_GET['func'] == "drop_1") {
drop_1($_GET['drop_var']);
}
其中要求這個功能:
function drop_1($drop_var)
{
include_once('functions.php');
$result = mysql_query("SELECT DISTINCT town FROM $tblname WHERE county='$drop_var'")
or die(mysql_error());
echo '<select name="drop_2" id="drop_2">
<option value=" " disabled="disabled" selected="selected">Select Your Town/Nearest Town</option>';
while($drop_2 = mysql_fetch_array($result))
{
echo '<option value="'.$drop_2['town'].'">'.$drop_2['town'].'</option>';
}
echo '</select>';
echo '<input type="submit" name="submit" value="Continue" />';
}
但是這個函數不會識別我的$ tblname變量,即使我使用Global!它識別的唯一變量是$ drop_var,它是第一個SELECT框的結果。
沒有人有任何想法如何,我可以。如果你使用PHP會話來存儲用戶的國家$ tblname變量傳遞到
function drop_1($drop_var) { ...
'onBlur'工作在客戶端瀏覽器上,而不是在服務器上,除非你使用'ajax',否則你不能在javascript事件上運行php函數 –
我只是在使用onBlur作爲一個糟糕的描述,一旦做出選擇從第一個SELECT中調用一個JS函數,該函數又調用PHP函數 - 我將JS添加到我的問題中。 – user2246804
它是一樣的,你不能從javascript調用php函數 –