我想搜索数据库使用下拉列表选定的值作为我的搜索关键字使用JsonResult在实体框架核心时,选择下拉列表项,而不是在输入框中显示正确的搜索结果,但显示[object Object]
。我需要帮助纠正我的代码犯了一些错误。请参阅我的视图,JsonResult和Jquery。
在某些情况下,我的表名为Student,有三列
识别号
学生姓名
金额
下拉列表显示StudentName,当选择学生姓名时,需要显示输入框中已经选择的学生的金额,但我尝试在输入框中显示[object Object]
时发生错误。
视图
<div class="form-group col-md-4">
<label asp-for="Id" class="control-label"></label>
<select id="studentname" asp-for="Id" asp-items="Model.Students" class="form-control">
<option value="">--Please Select--</option>
</select>
<span asp-validation-for="Id" class="text-danger"></span>
</div>
<div class="form-group col-md-4">
<label asp-for="StudentAmt" class="control-label"></label>
<input id="amount" asp-for="StudentAmt" class="form-control" />
<span asp-validation-for="StudentAmt" class="text-danger"></span>
</div>
Json结果
[HttpPost]
public JsonResult StudentAmt(int id)
{
var query = _context.Student.Where(p => p.ID == id)
.Select(p => new
{
p.Amount,
});
return Json(query);
}
JQuery语言
<script>
$(function () {
$("#studentname").change(function () {
var struId = $(this).find("option:selected").val();
if (struId != "") {
$.ajax({
type: "POST",
url: "/Biodata/StudentAmt?id=" + struId,
contentType: "application/json; charset=utf-8",
success: function (response) {
if (response != "") {
$('#amount).val(response);
} else {
$('#amount).val('');
}
}
});
} else {
$('#amount).val('');
}
});
});
</script>
2条答案
按热度按时间ql3eal8s1#
更改后端代码,例如:
然后在 AJAX 中:
演示:
顺便说一句:在我看来,你不需要选择一个项目,并发送id到后端,然后得到值,并返回到前端。当你设置下拉列表,你可以设置studentName为文本和金额为值,当选择一个项目,你可以直接填写下拉列表的值到输入框中的Javascript。
mwyxok5s2#
您从 AJAX 调用中正确地返回了对象
[object Object]
。尝试使用如下属性更改返回对象的代码:注意,我向response对象添加了
amount
属性。