如何在带有 ADO.NET 的 ASP.NET Core MVC 中使用 jQuery Ajax 自动完成

Posted

技术标签:

【中文标题】如何在带有 ADO.NET 的 ASP.NET Core MVC 中使用 jQuery Ajax 自动完成【英文标题】:How to use jQuery Ajax autocomplete in ASP.NET Core MVC with ADO.NET 【发布时间】:2021-12-02 06:15:31 【问题描述】:

为自动完成添加了脚本:

$("txtSearch").autocomplete(
                    source: function (request, response) 
                        $.ajax(
                            url: '/ProductSearchDisplay/GetProductDetailsById/',
                            data: "'prefix': '" + request.term + "'",
                            dataType: "json",
                            type: "POST",
                            contentType: "application/json; charset=utf-8",
                            success: function (data) 
                                debugger
                                response($.map(data, function (item) 
                                    return item;
                                ))
                            ,
                            error: function (response) 
                                alert(response.responseText);
                            ,
                            failure: function (response) 
                                alert(response.responseText);
                            
                        );
                    ,
                    select: function (e, i) 
                        $("#txtSearch").val(i.item.val);
                    ,
                    minLength: 1
                );
            )

控制器中发送列表数据的方法:

public JsonResult GetProductDetailsById(String prefix)

    List<ProductMaster> ObjProduct = new List<ProductMaster>();
    ObjProduct = objProductData.SearchProductData(prefix).ToList();
    ViewBag.data = ObjProduct;            
    return Json(ObjProduct);

该代码也不适用于自动完成搜索添加的脚本。

【问题讨论】:

“不工作”非常广泛。您是否进行了调试,并查看了错误是否在您的 C# 或 js 代码中? 欢迎来到 Stack Overflow。返回的 JSON 必须是数组列表或对象数组,其中至少有 label, value 对。请提供返回数据的示例或最小的、可重现的示例:***.com/help/minimal-reproducible-example 检查后端控制器的响应数据,我的意思是success: function (data)中的数据 【参考方案1】:

恐怕问题缺少“#”

这是我的测试代码

<link rel="stylesheet" href="//code.jquery.com/ui/1.13.0/themes/base/jquery-ui.css">
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.0/jquery-ui.js"></script>
<input id="txtSearch" />
<script>
    $("#txtSearch").autocomplete(
    //source: ["c++", "java", "php", "coldfusion", "javascript"],
    source: function (request, response) 
        var param =  "prefix": request.term;
        $.ajax(
            url: '/test/getData/',
            //data: "'prefix': '" + request.term + "'",
            data: JSON.stringify(param),
            dataType: "json",
            type: "POST",
            contentType: "application/json; charset=utf-8",
            success: function (data) 
                console.log(data);
                response($.map(data, function (item) 
                    return item;
                ))
            ,
            error: function (response) 
                alert(response.responseText);
            ,
            failure: function (response) 
                alert(response.responseText);
            
        );
    ,
    select: function (e, i) 
        $("#txtSearch").val(i.item.val);
    ,
    minLength: 1
);
</script>

这是我的控制器,我没有完成过滤器:

[HttpPost]
public JsonResult getData([FromBody] TestModel model)

    List<string> res = new List<string>
    
        "c++", "java", "php", "coldfusion", "javascript"
    ;
    return Json(res);

【讨论】:

即使在搜索时它不显示列表但显示空白列表 首先尝试使用//source: ["c++", "java", "php", "coldfusion", "javascript"], 以确保自动完成方法运行良好。 那么你可以检查你的后端api是否返回了正确的数据,我猜blank list来自后端,也许'前缀'没有传递到后端 @sonaliborekarr 使用var param = "prefix": request.term; 作为数据并在ajax 请求中将数据设置为data: JSON.stringify(param),。我刚刚修改了我的答案,请点击您问题后面的edit 按钮更新您的问题,但不要将您的更新作为答案。

以上是关于如何在带有 ADO.NET 的 ASP.NET Core MVC 中使用 jQuery Ajax 自动完成的主要内容,如果未能解决你的问题,请参考以下文章

带有 ADO .NET 的 ASP .NET MVC 会导致问题吗?

在 ASP.Net Core 项目中使用 ADO.Net 将 JSON 类型作为参数传递给 SQL Server 2016 存储过程

如何在 ASP.NET Core MVC 中使用 ADO.NET 向存储过程添加参数?

能说一下ADO.NET 和.NET,还有asp.NET的区别吗?

如何在 Asp.Net Core Mvc 5.0 中将 sql 数据库与 ado.net 连接?

带有 asp.net mvc 应用程序的 WCF 服务