【问题标题】:jQuery autocomplete not working with JSONjQuery 自动完成功能不适用于 JSON
【发布时间】:2018-01-13 14:43:27
【问题描述】:

我正在尝试实现 jQuery 自动完成功能。我觉得一切都设置得很好,但是它不起作用。

SearchSkies 方法

public JsonResult SearchSkies(string query)
{
     SkiDao skiDao = new SkiDao();
     IList<Ski> skies = skiDao.SearchSkies(query);    
     List<string> brands = (from Ski s in skies select s.Brand).ToList();
     return Json(brands, JsonRequestBehavior.AllowGet);
}

视图中的脚本

<script type="text/javascript">
  $( function() {
    $( "#searchBox" ).autocomplete({
      source: function( request, response ) {
        $.ajax( {
          url: '@Url.Action("SearchSkies","Skies")',
          dataType: "json",
          data: {
            query: request.term
          },
          success: function (data) {
              response(data);
          }
        } );
      },
      minLength: 2,
    });
  });
</script>

【问题讨论】:

  • 什么不起作用?您在浏览器控制台中遇到什么错误?
  • 我没有收到任何错误,自动完成只是没有完成任何事情......@StephenMuecke
  • 您是否从服务器获取品牌?您首先需要调试代码,看看是否有任何项目从服务器返回。
  • @ChetanRanpariya 似乎在我调试时不会调用 SearchSkies 方法
  • SearchSkies 操作方法应该是 HttpPost。您需要从 AJAX 提出相应的请求。 codingfusion.com/Post/…

标签: javascript c# jquery asp.net asp.net-mvc


【解决方案1】:

您没有在 ajax 调用中提及请求类型(GET/POST)。

$(document).ready(function () {  
       $("#searchBox").autocomplete({  
           source: function(request,response) {  
               $.ajax({  
                   url: "/Skies/SearchSkies",  
                   type: "POST",    <<----
                   dataType: "json",  
                   data: { query: request.term },  
                   success: function (data) {  
                       response($.map(data, function (item) {  
                           return { label: item.Name, value: item.Name };  
                       }))      
                   }  
               })  
           },  
           messages: {  
               noResults: "", results: ""  
           }  
       });  
   })

还有控制器

public class SkiesController : Controller  
{  
        // GET: Home  
        [HttpGet]  
        public ActionResult Index()  
        {  
            return View();  
        }  
        [HttpPost]  
        public JsonResult SearchSkies(string query)  
        {                
        SkiDao skiDao = new SkiDao();
        IList<Ski> skies = skiDao.SearchSkies(query);

        List<string> brands = (from Ski s in skies select s.Brand).ToList();
        return Json(brands, JsonRequestBehavior.AllowGet);
        }  
 } 

【讨论】:

  • 不要说像same problem这样含糊不清的说法,你有没有调试看看控制器是否被击中,如果不是浏览器控制台中有什么。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 2013-07-16
  • 2011-10-16
  • 1970-01-01
  • 2014-01-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多