所以我对ajax比较陌生,但我对发生的事情有一个概念。我有一个注册表格,使用数据库中的ajax更新“国家,城市和地区”字段。使用Ajax填充SQL下拉菜单
的PHP看起来是这样的
<select disabled name="City" id="City<?php $template->the_instance(); ?>" >
<?php
global $wpdb;
$results = $wpdb -> get_results("SELECT Distinct City FROM Location WHERE Country = '".$selected_country."'");
foreach ($results as $row)
{
echo "<option value=\"$row->City\">" . $row->City. "</option>";
}
echo "</select>";
?>
和Java脚本看起来像这样
$("#Country").change (function(){
var selected_country = $('#Country option:selected').val();
if (selected_country !=''){
$('#City').prop('disabled', false);
}
else {
$('#City').prop('disabled', 'disabled');
}
$.ajax({
url: ajax_object.ajaxurl,
type : 'post',
data : {
action : 'fetch_city',
selected_country: selected_country
}
})
})
如果我改变,其中请求被发送到myform.php的“URL”,结果下拉列表不会更新实际的数据库结果。我的猜测是我错过了一个步骤。
P.S我没有使用“动作”,因为我不确定它是否有帮助。我没有将它添加到functions.php文件中并动态地将其挂钩。
希望这是有道理的
我的数据库查询发生在php文件中,而不是java脚本,是否有可能这样做。没有在JS中运行查询?我不太确定 –
数据库访问只能发生在您通过url的ajax调用请求的php代码中:ajax_object.ajaxurl。请注意,您必须注意从此php返回的数据格式,以及如何处理javascript/ajax请求中的结果。 – Malvolio