我仍在学习Jquery,并且对自己手中的任务有些困惑。
看起来像一个简单的任务…我有一个框,想要在单击时填充“选项”。我不希望仅在有人真正要求查看列表时在页面加载时填充它。同样,它只需填充一次。我真的不希望有人每次扩大名单时都发出请求。
我想我的Select元素中可能会有一个函数调用
<select id="usersList" name="usersList" onclick="getUsers()">
然后让一个Javascript getUsers()函数调用我的Json GetUsers()ActionMethod来获取该列表。怎么样 ?
就像是…?
function getUsers()
{
getJSON("/Users/GetUsers", null, function (data){}
}
还是JQuery?…
$("usersList").click(
$.getJSON("/Users/GetUsers", null, function (data) {}
)
但是,我需要帮助,将所有内容放在一起。先感谢您!
这是我用来填充选择框的JavaScript。
$.getJSON("/Users/GetUsers", null, function(data) {
$("#UsersList option").remove(); // Remove all <option> child tags.
$.each(data.Users, function(index, item) { // Iterates through a collection
$("#UsersList").append( // Append an object to the inside of the select box
$("<option></option>") // Yes you can do this.
.text(item.Description)
.val(item.Id)
);
});
});
我建议您在页面加载时而不是在用户单击选择框时触发此操作。jQuery
AJAX默认情况下是异步的(应该是异步的),因此有一两分钟的选择框为空,这可能会使用户感到困惑。
这是您的问题范围吗?还是在MVC方面也需要帮助?如果您使用的是ASP.Net
MVC,则实际上是JsonResult的特定结果类型,这使创建JSON控制器方法更加简单,因为它们不需要相应的视图。它还允许您使用匿名数据结构,这使方法特定的投影更加简单。
编辑 这是返回上面的jQuery代码将理解的JSON结构的基本方法。请注意,属性u.Username
和u.ID
取决于您的Users对象。
[HttpPost]
public JsonResult GetUsers() {
return Json(new {
Users = from u in _usersRepository.Get()
select new { Description = u.Username, ID = u.ID }
});
}
但是,我建议您尽快放弃这种方法,并使用标准的JSON消息结构。我使用的是这样的:
{
Success: bool,
LoggedIn: bool,
ClientErrors: [
{ Number: int, Description: string, Parameter: string },
{ Number: int, Description: string, Parameter: string }...
],
ServerErrors: [
{ Id: int, Message: string },
{ Id: int, Message: string }...
],
Data: {}
}
这样做的原因如下:
绝不要你考虑我的结构 的 做到这一点的方式。显然,您的应用程序需求可能与我的有很大不同。一致性,比任何特定的结构都重要。
编辑:06/01/2016-
看到人们仍然在看这个答案。关于填充下拉列表,我建议研究使用双向绑定框架。我个人更喜欢Knockout.JS,尽管Angular.JS也能做到,但它是如此的轻巧和轻便。除此之外,此答案的其余部分仍然是最新的。
编辑:2016 年8月10日-代码缺少逗号。
问题内容: 我较早前发布了一个问题,但运气不太好,我希望清除第二个下拉列表的内容并重新填充该下拉列表,具体取决于第一个下拉列表中的值。 我有以下选择框,如下所示: 在此下拉菜单下,我还为模型添加了另一个下拉菜单: onchange我想清除第二个下拉列表,并在其中填充与汽车品牌相关的模型。例如。 然后,我具有如下所示的PHP函数(我正在使用codeigniter)-该函数使用Car ID并返回所有模
问题内容: 好的,这是我对Ajax的第一次尝试,它使我发疯,因为我实在无法绕开它。我想做的是在第一个框中用数据库中的客户填充,然后使用customerID通过select.php脚本从数据库中选择所有车辆ID。发生的情况是“客户”框被选中,但是选择客户时什么也没有发生。 这是我的Test.php文件: 这是我的select.php文件: 我正在尝试修改本教程以使用数据库,但到目前为止我没有成功。
问题内容: 我正在用getJSON填充选择菜单。我想知道是否有一种方法可以使用jQuery的.each函数引入这些值? 当然,必须有一种更简单的方法来完成此操作……也许吗? PHP文件: jQuery: 我的json输出看起来像这样: 问题答案: 使用@RaYell的方法....这对我有用: 感谢大家在此方面的帮助!
问题内容: 我想知道如何使用JSON填充表单吗? 我有一个使用php的JSON字符串, 并且我想使用JSON字符串填充表单控件(例如textarea或文本输入)。 我如何不使用外部插件(例如jQuery populate插件,我就看到了)来实现这一目标。 编辑:JSON格式: 这就是我从json_encode()得到的 问题答案: 此处存在问题,然后将其更改为开关值 使用它来为许多控件分配值:
问题内容: 我有一个HTML表单,可以通过ajax保存到数据库中。为了获得键/值对的查询字符串,我使用了非常方便的函数,如下所示: 现在,我想加载一个空白表格,并用数据库中的数据重新填充它,该数据是通过ajax调用作为JSON字符串传递的。我已经能够获得具有正确键/值对的Javascript对象,如下所示: 重新填写表格的最简单,最优雅的方法是什么? 请记住,表单的输入元素是文本,选择,复选框和单
问题内容: 当前,我们的开发团队使用这种模式,但是我不禁想知道是否存在更快或更有效的html方式来完成同一任务。 的HTML 这是Javascript: 问题答案: 这是我为此编写的函数。我不确定它是否比jQuery Templates更快。 它一次创建并附加一个Option元素,这可能比Templates慢 。我怀疑Templates会构建整个HTML字符串,然后一次创建所有DOM元素。那可能更