MVC3 Razor jQuery 自动完成传递返回值但不显示任何内容
我的自动完成功能遇到问题,它会命中控制器并返回值,但页面上没有显示任何内容,我在下面提供了代码,如有任何帮助,我们将不胜感激。
HomeControllerMethod
[HttpPost]
public JsonResult GetAccounts(string id)
{
var accounts = NavRepository.GetAccountsBasedOnString(id);
return Json(accounts, JsonRequestBehavior.AllowGet);
}
About.cshtml
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/themes/base/jquery-ui.css" type="text/css" media="all" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"> </script>
<script type="text/javascript">
$(function () {
$('#searchTerm').autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("GetAccounts", "Home")',
data: { id: request.term },
dataType: 'json',
type: 'POST',
minLength: 3,
success: function (event, ui) {
searchTerm.valueOf (ui.item.value);
}
});
}
});
});
</script>
@using (Html.BeginForm())
{
<form method="post" action="">
<input id="searchTerm" name="searchTerm" type="text" />
<input type="submit" value="Go" />
</form>
}
编辑: 下面是我的最终功能
$(function () {
$('#searchTerm').autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("GetAccounts", "Home")',
data: { id: request.term },
dataType: 'json',
type: 'POST',
minLength: 3,
success: function (data) {
response(data); ;
}
});
}
});
});
I'm having trouble with my auto complete functionality, it hits the controller and returns the values but nothing is displayed on the page, I have provided the code below any help is appreciated.
HomeControllerMethod
[HttpPost]
public JsonResult GetAccounts(string id)
{
var accounts = NavRepository.GetAccountsBasedOnString(id);
return Json(accounts, JsonRequestBehavior.AllowGet);
}
About.cshtml
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.14/themes/base/jquery-ui.css" type="text/css" media="all" />
<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"> </script>
<script src="@Url.Content("~/Scripts/jquery-ui-1.8.11.min.js")" type="text/javascript"> </script>
<script type="text/javascript">
$(function () {
$('#searchTerm').autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("GetAccounts", "Home")',
data: { id: request.term },
dataType: 'json',
type: 'POST',
minLength: 3,
success: function (event, ui) {
searchTerm.valueOf (ui.item.value);
}
});
}
});
});
</script>
@using (Html.BeginForm())
{
<form method="post" action="">
<input id="searchTerm" name="searchTerm" type="text" />
<input type="submit" value="Go" />
</form>
}
Edit:
Below is my final function
$(function () {
$('#searchTerm').autocomplete({
source: function (request, response) {
$.ajax({
url: '@Url.Action("GetAccounts", "Home")',
data: { id: request.term },
dataType: 'json',
type: 'POST',
minLength: 3,
success: function (data) {
response(data); ;
}
});
}
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
一些事情:
您需要调用小部件向您提供的
source
函数提供的response
函数。另外,您似乎将自动完成选项之一 (minLength
) 与 AJAX 调用混合在一起:此外,请确保您为小部件提供了它期望的数据。您需要为
response
函数提供一个字符串数组,例如:<前><代码>[“项目1”,“项目2”,“项目3”]
或者,您可以提供带有 label 属性、value 属性或两者的对象数组:
您可能已经这样做了,但我必须查看您的控制器操作返回的内容。
A few things:
You need to call the
response
function that the widget supplies to thesource
function you provide. Also, it looks like you have one of the autocomplete's options (minLength
) mixed in with the AJAX call:Additionally, make sure that you're supplying the widget with the data it expects. You need to supply the
response
function with an array of strings, e.g:Alternatively, you can supply an array of objects with a label property, a value property, or both:
You may already be doing this, but I would have to see what your controller action returns.