【发布时间】:2016-09-08 14:04:25
【问题描述】:
我有一个控制器,我在里面做了两个动作结果
public ActionResult ProductSearch(string term)
{
// Get Products from database
InvoiceDBEntities db = new InvoiceDBEntities();
var myproducts = (from E in db.Products
orderby E.Product ascending
select E.Product.Trim());
return this.Json(myproducts.Where(t => t.Contains(term)), JsonRequestBehavior.AllowGet);
}
public ActionResult DetailsFetch(string term)
{
InvoiceDBEntities db = new InvoiceDBEntities();
var mydetails = (from E in db.Products
orderby E.Product ascending
select new
{
Product = E.Product.Trim(),
Price = E.Price.ToString(),
UM = E.UM
}).ToArray();
return this.Json(mydetails.Where(t => t.Product.Contains(term)), JsonRequestBehavior.AllowGet);
}
并在查看相应的脚本
//auto complete products
$('#itemName').autocomplete(
{
source: '/Invoices/ProductSearch'
});
//prefill some inputs
$("#UM").focus(function () {
var MySelection = $("#itemName").val().trim();
$.ajax({
type: "POST",
data: { term: MySelection },
url: "/Invoices/DetailsFetch/",
dataType: "json",
succes: function (data) {
$("#UM").val(data.UM);
$("#rate").val(data.Price);
},
error: function () {
//Manage errors if any
}
});
});
$("#itemName").blur(function () {
var MySelection = $("#itemName").val().trim();
$.ajax({
type: "POST",
data: { term: MySelection },
url: "/Invoices/DetailsFetch/",
dataType: "json",
succes: function (data) {
$("#UM").val(data.UM);
$("#rate").val(data.Price);
},
error: function () {
//Manage errors if any
}
});
});
//
第一部分(自动完成)工作正常。现在我希望在我的表单(或任何其他合适的事件)中输入下一个输入以执行下一个操作结果并使用我获得的数据预先填写表单中的相关输入。 我可以在浏览器中看到结果,因此操作结果运行良好,但相关输入均未更新。 当我输入下一个输入(通过鼠标单击或键盘 [tab])时,我在浏览器中看到的响应是:
[{"Product":"Serviciu de dezvoltare aplicatie WEB","Price":"1000.00","UM":"Buc."}]
我在我的应用程序的另一部分使用了类似的概念,唯一的区别是事件是按钮单击,并且一切正常,相关输入预先填充了来自 json 响应的数据。
我会做错什么?
【问题讨论】:
标签: javascript jquery asp.net-mvc forms