我试图基于WordPress中的下拉列表,使用AJAX实现数据库中的数据。控制台中返回400个错误请求的代码。我作为本地主机托管了该页面。
这是我的主题functions.php
//我更改了密码
function my_enqueue_scripts() {
wp_enqueue_script(\'jquery\');
}
add_action(\'wp_enqueue_scripts\', \'my_enqueue_scripts\');
function fetchData(){
global $wpdb;
// this can be improved
$catId = isset($_REQUEST[\'catId\']);
if($catId){
$result_data = $wpdb->get_results("SELECT * FROM sub_category where categor_id = \'".$catId."\'");
foreach ($result_data as $data) {
echo "<option value=\'".$data->id."\'>\'".$data->sub_category_name."\'</option>";
}
}
die();
}
// add your ajax action to authenticated users only
add_action(\'wp_ajax_fetch_data\',\'fetchData\');
Am also adding the jQuery part here:
<script type="text/javascript">
jQuery(document).ready( function(){
jQuery(\'#category\').on(\'change\',function (){
console.log("start1");
var catId = document.getElementById(\'category\').value;
console.log(catId);
jQuery.ajax({
type: \'POST\',
url: "<?php echo admin_url( \'admin-ajax.php\' ); ?>",
data: {
\'key\':catId,
\'action\': "fetch_data" // very important
},
success : function (data) {
jQuery(\'#sub_cat\').html(data);
}
});
});
});
</script>
<form method="post" name="myform" id="myform">
<table width="200" border="0" cellpadding="10">
<tr>
<th scope="col"> </th>
<th scope="col"> </th>
<th scope="col"> </th>
</tr>
<tr>
<td><label>Category</label></td>
<td><select name="category" id="category" >
<option value="">Select the category</option>
<?php
global $wpdb;
$result_fromDB = $wpdb->get_results("SELECT * FROM `category`");
foreach ($result_fromDB as $cat) {
echo "<option value=\'".$cat->id."\' selected>".$cat->name."</option>";
}
?>
</select>
</td>
<td></td>
</tr>
<tr>
<td><label>Sub Category</label></td>
<td>
<div id="fetch_data"><select name="sub_cat" id="sub_cat">
<option value=""> Select Sub category</option> <!--Here I want to return the data-->
</select></div>
</td>
</tr>
</table>
</form>
记住我使用的是内部脚本,请给出一个解决方案。