我有一个带有选择列表的页面(从mysql成功填充)和一个文本框。必须使用mysql中的值根据列表中选择的项填充文本框。但是对php的ajax调用不起作用,我无法弄清楚问题是什么。我只是在学习ajax和php,所以新手..请帮忙。我坚持了很长时间。
<script>
$(document).ready(function() {
$('.selectpicker').on("change", function(){
var selected_data = $(this).find("option:selected").val();
alert(selected_data);
$.ajax ({
type: "POST",
data: { selected_data: selected_data },
url: "getoldcharity.php",
dataType: "json",
success: function(res) {
$('#charity_new').val(data.charity_new);
}
});
});
});
</script>
<form id="assign-fundraiser_form" class="form-horizontal" action="" method="post">
<div class="form-group">
<div class="col-md-3">
<select class="selectpicker form-control" id="fundraiser" name="fundraiser" required>
<option value="" selected disabled>Select a Fundraiser</option>
<?php
include('session.php');
$result1 = mysqli_query($db,"select concat(f_firstname,' ',f_lastname) fundraiser from fundraiser where f_company in (select contractor_name from contractor where company_name = '$_SESSION[login_user]') and f_status = 'Active' order by concat(f_firstname,' ',f_lastname)");
while ($rows = mysqli_fetch_array($result1))
{
echo "<option>" .$rows[fundraiser]. "</option>";
}
?>
</select>
</div>
</div>
<input type="text" name="charity" id="charity_new" />
</form>
&#13;
<?php
include "session.php";
if (ISSET($_POST['.selectpicker'])) {
$ref = $_POST['.selectpicker'];
$query = $db->query("select f_charity charity_new from fundraiser limit 1");
$row = $query->fetch_assoc();
$charity_new = $row['charity_new'];
$json = array('charity_new' => $charity_new);
echo json_encode($json);
}
$db->close();
?>
答案 0 :(得分:0)
我想,应该是
$('#charity_new').val(res.charity_new);
而不是
$('#charity_new').val(data.charity_new);
答案 1 :(得分:0)
我从快速浏览中发现了一些问题,所以我将它们分开了。
在您的AJAX请求中,您正在使用data: { selected_data: selected_data }
,这意味着PHP代码将需要一个名为selected_data
的POSTed键,但您正在寻找.selectpicker
。你好像混淆了几件事,所以不是:
$_POST['.selectpicker']
它应该是:
$_POST['selected_data']
正如Ravi在他的回答中指出的那样,你还需要改变你的成功功能。传递给此函数的参数是res
而不是data
,因此不是:
$('#charity_new').val(data.charity_new);
它应该是:
$('#charity_new').val(res.charity_new);
看起来您的查询本身也是无效的 - 您似乎在列选择中缺少逗号。
select f_charity charity_new from fundraiser limit 1
应该是:
select f_charity, charity_new from fundraiser limit 1
或者,看到你在结果中没有使用f_charity
列:
select charity_new from fundraiser limit 1
您没有使用正在POST的值,这意味着在下拉列表中选择的任何选项都不会对查询本身产生任何影响 - 它将始终返回数据库中的第一条记录。
要注意的另一件事是你在更改函数上使用了类选择器。这意味着如果HTML中有多个具有相同类名的下拉列表,它们将调用相同的AJAX函数并更新文本框。我不知道这是不是你的目标,但是从发布的代码中,你只有一个下拉表格。如果您只想让一个下拉列表调用AJAX函数,则应使用ID选择器:
$('#fundraiser').on("change", function() {
// ...
}