自动填充代码有效,但我无法使用实际搜索值过滤输出(低声说唱片记录),因为该参数(d.queryString)不在ajax请求中。
我有这个代码, 的文本框
<input type="text" name="CustomerNumber" value="@if (@ViewBag.CustomerNumber != null){@ViewBag.CustomerNumber}" />
Jquery脚本
<script type="text/javascript">
$(document).ready(function () {
$("input[name='CustomerNumber']").autocomplete({
source: function (request, response) {
$.ajax({
dataType: "json",
type: 'GET',
url: '@Url.Action("GetCustomerNames")',
data: function (d) {
d.queryString = $("input[name='CustomerNumber']").val()
},
success: function (data) {
// assuming data is a JavaScript array such as
// ["one@abc.de", "onf@abc.de","ong@abc.de"]
// and not a string
response(data);
}
});
},
minLength: 3
});
});
</script>
.NET控制器
public JsonResult GetCustomerNames(string searchQuery)
{
var autocompleteList = new List<string>();
using (var db = new DB.APPDBContext())
{
autocompleteList = db.GetAutocompleteList(1, searchQuery).ToList();
}
return Json(autocompleteList, JsonRequestBehavior.AllowGet);
}
如果我输入3个字母,我会将所有(未过滤的)记录输入到低语,因为参数queryString(实际文本框值)不会发送到控制器。为什么ajax请求中缺少queryString参数?
感谢你的想法
答案 0 :(得分:0)
1)创建一个包含文本框内容的对象:
var queryString = {
searchQuery: $("input[name='CustomerNumber']").val()
}
2)然后使用$.param
创建一个URL以生成查询字符串:
var url = "@Url.Action("GetCustomerNames")?" + $.param(queryString);
3)使用Ajax方法中生成的URL:
$("input[name='CustomerNumber']").autocomplete({
source: function (request, response) {
$.ajax({
dataType: "json",
type: 'GET',
url: url,
success: function (data) {
// assuming data is a JavaScript array such as
// ["one@abc.de", "onf@abc.de","ong@abc.de"]
// and not a string
response(data);
}
});
},
minLength: 3
});