【发布时间】:2009-06-22 01:07:55
【问题描述】:
我有一个 Web 表单,其中包含许多用于操作 DOM 的 JavaScript 功能。 这是使用 AJAX 调用服务来实现的,该服务将返回我必须做的任何事情,例如隐藏元素、级联下拉列表、删除新项目并将其插入到选择中等。
除了一个特定的功能外,一切都按预期工作。此函数仅根据我的 AJAX 调用返回的内容禁用并在选择元素中设置默认值。例如,假设我从以下选择中选择了“foo”并保存了记录:
<select id="mySelect2">
<option value="0">Default</option>
<option value="foo">Foo</option>
<option value="another_foo">Foo 2</option>
</select>
太棒了!现在,我更改了 Web 表单中触发 AJAX 调用的其他元素。返回的数据告诉我应该选择 Default 并禁用 select 元素。这工作得很好。但是,当我再次保存记录并在数据库中验证它时,在这种情况下默认值 0 不会被保存。记录保留之前选择的项目(“foo”)。
如果你好奇,我使用下面的代码来完成这个:
-
绑定 AJAX 调用
$('myElement').change(GetData); -
GetData 方法
$.ajax({ type: 'POST', url: 'myUrl', data: "{'id':'" + myIdFromMyElement + "'"}", contentType: 'application/json; charset=utf-8', dataType: 'json', success: OnSuccess, error: OnError }); -
根据返回的数据操作选择元素:
function OnSuccess(data, textStatus) { if (data.d.DisableMySelect2){ $('#mySelect2').val('0'); $('#mySelect2').attr('disabled', 'disabled'); } }
为什么会这样?
编辑:
进一步调查表明,我的 web 表单没有正确解除绑定更改的值,但是当我转到 Request.Form["mySelect2"] 时,我实际上可以看到更新后的值,因此显然客户端没有任何问题。
【问题讨论】:
标签: asp.net jquery data-binding