我正在尝试使用PHP
from a jQuery
post 方法创建一个表,但我失败了。
PHP/HTML
<tr>
<td>Name: </td>
<td>
<select id="name" onchange="showUserInfo()">
<option value="">Please select a person...</option>
<?php $names = getUserName($db); foreach($names as $key => $value) { ?>
<option value="<?php echo $key ?>"><?php echo $value ?></option>
<?php }?>
</select>
</td>
</tr>
...
<div id="editUserTable">hi</div>
jQuery
function showUserInfo() {
var str = $('#name option:selected').text(); // THIS VARIABLE IS NOT BEING SET
$.post('/TrakFlex/functions/getUserInfo.php', { input: str }, function(data) {
$('#editUserTable').html(data);
})
}
现在我知道这个变量没有被设置,因为如果我替换
var str = $('#name option:selected').text();
使用这样的实际用户名
var str = 'De Bug';
一切正常,表格加载到包含所有用户信息的表单中。
就像现在一样,当表单加载时,div 'editUserTable' 显示“hi”,但是当我选择用户时,“hi”消失并且没有显示任何内容。
应该注意我已经尝试过了,但它不起作用
var str = $('#name').val();
再次,问题是,为什么这个变量没有被设置为内部 HTML 或 selected 的“文本” <option>
。任何帮助表示赞赏
编辑 如果我在选择用户后查看页面源,这就是我看到的
<select id="name" onchange="showUserInfo()">
<option value="">Please select a person...</option>
<option value="0">De Bug</option>
<option value="1">Jon Doe</option>
<option value="2">A Name</option>
</select>
编辑 2
如果我在我的 jQuery 中对用户名进行硬编码,那么所有内容都会加载到我的 html 页面中。
这是原版
function showUserInfo() {
var str = $('#name option:selected').text(); // THIS VARIABLE IS NOT BEING SET
$.post('/TrakFlex/functions/getUserInfo.php', { input: str }, function(data) {
$('#editUserTable').html(data);
})
}
如果我把它改成这个,它就可以了
function showUserInfo() {
var str = 'De Bug'; // I can also use 'A Name' or 'Jon Doe' they all work
$.post('/TrakFlex/functions/getUserInfo.php', { input: str }, function(data) {
$('#editUserTable').html(data);
})
}