0

我正在使用Tag-it jquery 插件,该插件使用名为“sampleTags”的变量来存储一些值,以便在用户编写某些内容以赋予他们自动完成功能时使用它。

var sampleTags = ['c++', 'java', 'php', 'coldfusion']

我的问题是:

  1. tblTags我从像这样使用 EF调用的表中检索我的标签名称

    Array MyTags=db.tblTags.ToArray();  
    

    我使用 asp.net mvc,如何将 MyTags 的值放入 sampleTags 中,以便为我的用户提供依赖于我的数据的自动完成功能?

  2. 如何验证用户输入的数据并更新我的数据库?

这种方式对我不起作用

    $(function () {       
        var sampleTags = new Array();

        $.ajax({
            url: '/mp3/GetTags',
            type: 'POST',
            contentType: 'application/json; charset=utf-8',
            failure: function () { 
                 alert('Error contacting service!'); 
            },
            success: function (data) {
                for (var j = 0; j < data.d.length; j++) {
                    // Now you can use something like data.d[j].studentID;
                    sampleTags[j] = data.d[j].item;
                }

                $('#allowSpacesTags').tagit({
                    availableTags: sampleTags,
                    allowSpaces: true
                });
            }
        });
    });
4

2 回答 2

0

您可以将 MyTags 变量设置为 ViewBag,并将 ViewBag 内容设置为 sampleTags 或检查 sampleTags 是否具有接收 Json 的函数。

于 2012-09-05T12:13:51.880 回答
0

个人不是 viewBag 的粉丝,但无论如何,我喜欢使用 return JSON 方法将数据从控制器传回视图:

public JsonResult someMethod()
{
    //populate your tags into say, tagX
    return Json(tagX);
}

然后在 JavaScript 端,通过 $.ajax() 调用接收 JSON 数据,其中 dataType 设置为 JSON 和 POST,然后根据需要反序列化/转换为 JavaScript 数组(如果您的插件需要)。

要回答您关于反序列化的评论:

$.ajax({
                    url: '../WebServices/SomeService.asmx/SomeSearch',
                    type: 'POST',
                    data: "{'jsonFilterObject':" + JSON.stringify(jsonFilterObject) + "}",
                    contentType: 'application/json; charset=utf-8',
                    failure: function () { alert('Error contacting service!'); },
                    success: function (data) {
                        for (var j = 0; j < data.d.length; j++) {
                            //Now you can use something like data.d[j].studentID;
}
                    });
于 2012-09-05T23:03:29.863 回答