2011-10-19 18 views
2

我遇到了我的自动完成功能的问题,它击中控制器并返回值,但没有任何显示在页面上,我提供了下面的代码,任何帮助表示赞赏。MVC3剃刀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); ; 
       } 
      }); 
     } 
    }); 
}); 
+0

控制器操作返回的JSON是什么样子的? –

回答

3

有几件事情:

  1. 您需要调用Widget提供给您提供的source函数的response函数。此外,它看起来像你有与AJAX调用混合自动完成的选项(minLength)之一:

    $('#searchTerm').autocomplete({ 
        source: function (request, response) { 
         $.ajax({ 
          url: '@Url.Action("GetAccounts", "Home")', 
          data: { id: request.term }, 
          dataType: 'json', 
          type: 'POST', 
          success: function (data) { 
           response(data); // You may have to perform post-processing here depending on your data. 
          } 
         }); 
        }, 
        minLength: 3 
    }); 
    
  2. 此外,请确保您提供与预计数据的小部件。你需要有一个字符串数组提供response功能,如:

    ["Item1", "Item2", "Item3"] 
    

    或者,你可以用一个标签物业供应对象的数组,一个财产,或两者:

    [{ label: "Item1", value: "1" }, { label: "Item2", value: "2" }] 
    

    您可能已经在做这件事,但我必须看看您的控制器操作返回了什么。

+0

我改变了这条线,并让它工作,谢谢安德鲁。成功:功能(数据){响应(数据); ; – CouncilScribe