3
我试图创建一个下拉菜单,它将更新页面上的文本而不刷新页面。更新后的文本将由一个php函数提供,该函数从下拉列表中传递一个值。现在,我的下拉什么也不做,但这里是我已经成功地得到:根据下拉响应更新div而不刷新
webpage.php:
我的下拉列表。由数据库填充。
<form method='post'>
<select name="skill1_level" id="skill1_level" onchange="skill1ValueChange(this.value)">
// PHP to dynamically populate list from the DB
<?php foreach ($skill_levels as $key => $skill_levels_list): ?>
<option value=""><?= $skill_levels_list->skill_level ?></option>
<?php endforeach ?>
</select>
</form>
我的div。目前只是加载一个默认字符串。在提交下拉列表时,需要弄清楚如何进行此更改。不知道如何在这里使用AJAX。
<div class="panel-body" id="skill1_text">
<?php echoSkill($hero->skill1_desc, $placeholders, $id_hero, 1, 1, $dbh); ?>
</div>
functions.js。提交下拉列表时将调用Javascript。调用PHP函数。
function skill1ValueChange(skill_level) {
$.ajax({
url: 'functions.php',
type: 'POST',
data: {option : skill_level},
success: echoSkill($hero->skill1_desc, $placeholders, $id_hero, 1, skill_level, $dbh) {
console.log("Data sent for skill1.");
}
});
functions.php。根据下拉值对我的数据做一些操作,然后回显结果字符串。
function echoSkill ($skill_desc, $placeholders, $id_hero, $skill_num, $skill_level, $dbh) {
$skill_values = fetchSkillValues($id_hero, $skill_num, $skill_level, $dbh);
$skill_values = array($skill_values[0]->skill_x, $skill_values[0]->skill_y, $skill_values[0]->skill_z, $skill_values[0]->skill_a);
$skill_desc = str_replace($placeholders, $skill_values, $skill_desc);
echo $skill_desc;
}
任何帮助和解释,你可以提供将不胜感激!
* functions.js。提交下拉列表时将调用Javascript。调用PHP函数。* - 这是不可能的,因为你写它。 – Rasclatt
JavaScript无法直接调用PHP函数。它们是两种不同的语言,并且在页面加载过程的不同时间运行。 – Rasclatt