我想在搜索到的客户的基础上在文本字段中加载数据。我正在开发'创建'客户视图,我有搜索字段和客户输入字段。 Ajax函数,它假设将参数传递给动作'LoadCustomerInfo'并在文本框中'发布'json数据
<input type="text" id="custm"/>(sutomer id)
<input type="button" value="search" id="btnSearchCus"/>
@Html.TextBox("CustomerName")
@Html.TextBox("FName")
@Html.TextBox("Phone")
<script type="text/javascript">
$(document).ready(function () {
$("#btnSearchCus").click(function () {
var custm = $('#custm').val();
$.ajax({
cashe: 'false',
type: "POST",
data: { "custm": custm },
url: '@Url.Action("LoadCustomerInfo", "Sales")',
dataType: 'HTML', // add this line
"success": function (data) {
if (data != null) {
var vdata = data;
$("#CustomerName").val(vdata[0].Name);
$("#FName").val(vdata[0].FatherName);
$("#Phone").val(vdata[0].Phone1);
}
}
});
});
});
</script>
创建控制器,虽然它现在与此无关,
public ActionResult Create()
{
ViewBag.CustomerId = new SelectList(db.Customer, "CustomerId", "Name");
ViewBag.SMClientBranchId = new SelectList(db.SMClientBranch, "SMClientBranchId", "Name");
ViewBag.EngineNumber = new SelectList(db.Stock, "EngineNumber", "EngineNumber");
return View();
}
采取参数“custm”并执行操作的操作是:
public ActionResult LoadCustomerInfo(string custm)
{
var query = from c in db.Customer
where c.NIC == custm
select c;
return Json(query);
}
问题是,数据没有加载到文本框中,似乎我做错了什么......请帮助或任何参考将有所帮助...感谢您的时间..
答案 0 :(得分:2)
您的控制器方法正在返回json
,因此您需要将ajax参数更改为
$.ajax({
...
url: '@Url.Action("LoadCustomerInfo", "Sales")',
dataType: 'json', // change this
"success": function (data) {
...
此外,您只需要视图中的一个对象,所以不要发送整个集合,只需返回一个对象
public ActionResult LoadCustomerInfo(string custm)
{
....
return Json(query.FirstOrDefault());
}
答案 1 :(得分:1)
您的数据类型应该是json
,而不是html
,并且拼写错误cache
btw。
$.ajax({
cache: 'false',
type: "POST",
data: { "custm": custm },
url: '@Url.Action("LoadCustomerInfo", "Sales")',
dataType: 'json', // add this line
"success": function (data) {
if (data != null) {
var vdata = data;
$("#CustomerName").val(vdata[0].Name);
$("#FName").val(vdata[0].FatherName);
$("#Phone").val(vdata[0].Phone1);
}
}
});