Moh*_*mad 8 asp.net-mvc jquery autocomplete
我正在使用jQuery 网站上的 jQuery autocomplete插件 调用控制器url,返回json.问题是发送到控制器的参数始终为null.
以下是自动完成的浏览器内jQuery代码:
$(document).ready(function() {
var url = "/Building/GetMatchedCities";
$("#City").autocomplete(url);
});
Run Code Online (Sandbox Code Playgroud)
这是C#中的ASPNET MVC控制器签名:
public JsonResult GetMatchedCities(string city)
{
..
return this.Json(query, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
提前致谢,
穆罕默德
我有同样的问题.在Fiddler中查看JQuery创建的URL之后,我发现它看起来像这样:/ MyController/MyMethod?term = x.所以我改变了我的方法签名,使用参数名称'term'而不是'q'('q'显示在JQuery网站自动完成示例中.).这解决了问题,我仍然能够返回我需要的JsonResult.
public JsonResult MyMethod(string term)
{
...
return Json(query, JsonRequstBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
尝试将城市数据添加为 extraParms:
$("#City").autocomplete(url, {
extraParams: { city: $('#City').val() }
});
Run Code Online (Sandbox Code Playgroud)
这是假设使用 .val 时 $('#City') 是文本类型的输入
根据您的反馈,答案是:
控制器应该是:
public JsonResult GetMatchedCities(string q)
{
..
return this.Json(query, JsonRequestBehavior.AllowGet);
}
Run Code Online (Sandbox Code Playgroud)
jquery 将是:
$(document).ready(function() {
var url = "/Building/GetMatchedCities";
$("#City").autocomplete(url);
});
Run Code Online (Sandbox Code Playgroud)