我正在使用Tag-it jquery plugin此插件使用名为“sampleTags”的变量来存储一些值,以便在用户编写某些内容时为其提供自动完成功能。
var sampleTags = ['c++', 'java', 'php', 'coldfusion']
我的问题是:
我使用EF这样
从名为tblTags
的表中检索我的标签名称
Array MyTags=db.tblTags.ToArray();
我使用asp.net mvc,我如何将MyTags的值放在sampleTags中,以便我为用户提供依赖于我的数据的自动完成功能?
我如何验证用户输入的数据并更新我的数据库?
这种方式对我不起作用
$(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
});
}
});
});
答案 0 :(得分:0)
您可以将MyTags变量设置为ViewBag,并将ViewBag内容设置为sampleTags或检查sampleTags是否具有接收Json的函数。
答案 1 :(得分:0)
个人不是viewBag的粉丝,但无论如何,我喜欢使用返回JSON方法将数据从控制器传递回视图:
public JsonResult someMethod()
{
//populate your tags into say, tagX
return Json(tagX);
}
然后在JavaScript端,通过$ .ajax()调用接收JSON数据,其中dataType设置为带有POST的JSON,然后根据需要反序列化/转换为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;
}
});