c# - 将数据从 C# 返回到 jQuery UI 自动完成

标签 c# jquery ajax asp.net-mvc jquery-ui

我想用数据库中的数据填充我的自动完成。 所以我在 c# 中写了一个方法来从 db 中读取它:

public string[] GetNames()
{
    var names = unitOfWork.deviceRepository.Get().Select(w=>w.Name);
    return names.ToArray();
}

这很好用。所有需要的数据都在名称中。

现在我使用 Ajax 将这些数据发送到客户端:

$(function () {
    var availableTags;
    $.ajax({
        url: "/DeviceUsage/GetNames",
        type: "GET",
        error: function (data) {
            alert("wystąpił nieokreślony błąd " + data);
        },
        success: function (data) {
            console.log(data);
            availableTags = data;
        }
    })
    $("#deviceName").autocomplete({
        source: availableTags
    });
});

如您所见,我将 dataType 留作智能猜测。 但是成功的 console.log 在控制台中写入了 System.String[] 而不是来自 GetNames 的数据。 谁能建议我如何修改我的代码以获得自动完成功能?

最佳答案

dataType 不适用于 C# 或 MVC 或服务器端,这是告诉 jQuery 您正在使用 json 响应,jQuery 应该解析它。因为你没有提供它,jQuery 不会解析它,因此数据只是一个字符串。如果您需要 json,请提供它或使用 JSON.parse 来解析您的数据字符串。

要么 -

$.ajax({
        url: "/DeviceUsage/GetNames",
        type: "GET",
        dataType: "json",
        error: function (data) {
            alert("wystąpił nieokreślony błąd " + data);
        },
        success: function (data) {
            console.log(data);
            availableTags = data;
        }
    })

或-

$.ajax({
        url: "/DeviceUsage/GetNames",
        type: "GET",
        error: function (data) {
            alert("wystąpił nieokreślony błąd " + data);
        },
        success: function (data) {
            var jsonData = JSON.parse(data);
            console.log(jsonData);
            availableTags = jsonData;
        }
    })

而且,您在分配之前不会等待 ajax 完成 -

$("#deviceName").autocomplete({
        source: availableTags
    });

你应该等待 ajax 完成,所以像这样在 success 中调用这个 -

success: function (data) {
            //do proper parsing as mentioned earlier
            availableTags = jsonData;
            $("#deviceName").autocomplete({
                 source: availableTags
             }); 
        }

因为在调用 availableTags 时没有任何内容。

关于c# - 将数据从 C# 返回到 jQuery UI 自动完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23489254/

相关文章:

c# - 在 ViewModel 中访问 XAML 对象

javascript - 全局变量未在 $.getJSON 中正确设置值

c# - Automapper DynamicMap 随机无法映射匿名类型

c# - 使用 1 种方法将数据拉入 GridView 并在保存更改时出现 null ref 异常

c# - 读取包含多个具有相同属性名称的标签的 xml 文件,并根据用户的输入替换值

Javascript 表单验证 "onKeyup vs on keydown"

c# - 向 breeze-saving-server 函数发送附加参数

javascript - 取消选择切换单击时突出显示的区域

jquery - 通过使用 jQuery 解析 sessionID 从 WCF 服务访问 session 变量

javascript - HTML Select,通过 Ajax 返回的选项,应该选择的项目没有被选择