jQueryUI +使用 json 数据的 ASP .NET MVC 自动完成
我在使用 jQueryUI 自动完成调用 JSON 时遇到了很大的问题。 我有一个相当简单的 JS:
$(document).ready(function() {
$('#Editor_Tags').autocomplete({
source: "/Forums/Ajax/GetTags",
focus: function () {
// prevent value inserted on focus
return false;
},
select: function (event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.TagName);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(", ");
return false;
}
});
});
这是我试图返回的模型:
public class TagView
{
public int TagId { get; set; }
public string TagName { get; set; }
public int Weight { get; set; }
}
但这不是主要问题。 主要问题是,当我开始输入时,jQuery 不会向控制器发出请求。我 100% 确定指定的 Url 是正确的。因为我可以通过输入 /Forums/Ajax/GetTags?term=text 手动访问控制器 我得到了结果。 我直接从 google CDN 使用 jQuery 和 jQUI 的 newset 版本。
I have really big problem with calling JSON with jQueryUI autocomplete.
I have this fairly simple JS:
$(document).ready(function() {
$('#Editor_Tags').autocomplete({
source: "/Forums/Ajax/GetTags",
focus: function () {
// prevent value inserted on focus
return false;
},
select: function (event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.TagName);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(", ");
return false;
}
});
});
And this is model I'm trying to return:
public class TagView
{
public int TagId { get; set; }
public string TagName { get; set; }
public int Weight { get; set; }
}
But that's not the main issue.
Main issue is, When I start typing, jQuery do not make request to controller. I'm 100% sure, that the Url speciefied is good. Because I can manually access to controller by typing /Forums/Ajax/GetTags?term=text
And I get results for it.
I'm using newset version of jQuery and jQUI directly rom google CDN.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
jQueryUI 自动完成小部件期望
source
参数中的数据满足以下要求:因此,您有两个选择:
将要序列化的视图模型更改为 JSON 以满足这些要求:
将自动完成小部件的
source
参数更改为您自己执行 AJAX 调用的函数并适当地格式化数据:假设从服务器返回的数据是
TagView
对象的 JSON 数组。第二段代码未经测试,但它至少应该让您朝着正确的方向前进。
The jQueryUI autocomplete widget expects data in the
source
parameter to meet the following requirements:So you have two options:
Change the viewmodel you're serializing to JSON to meet those requirements:
Change the autocomplete widget's
source
parameter to be a function in which you perform the AJAX call yourself and format the data appropriately:This is assuming that the data returned from the server is a JSON array of
TagView
objects.The second piece of code is untested, but it should at least get you in the right direction.
我已经让它与这段代码一起工作:
本质上与安德鲁发布的内容没有什么不同。
I have got it working with this code:
Which essentialy is not that diffrent from what Andrew have posted.