Javascript 在Chrome和Firefox中更新数据,但不在InternetExplorers 7、8和;9
我不确定这是一个淘汰赛问题,一个JSON问题还是其他问题,所以我将解释这一切 我有一个显示大量用户的Web网格。我可以使用AJAX弹出窗口编辑这些成员。作为此窗口的一部分,我可以为特定用户分配角色。如下图所示: 这些角色是从下拉菜单中选择的,如果我想对一个用户应用多个角色,我可以添加额外的下拉菜单。我使用knockout的foreach绑定来实现这一点 现在,在我点击save之后,webgrid列会在所有浏览器中自动更新。然而,如果我编辑一个用户并给他们额外的角色,然后点击保存,然后再次尝试编辑他们,他们新添加的角色不会出现在IE中。然而,Chrome和Firefox工作得非常好 当我单击此弹出窗口上的“保存”按钮时,数据将使用以下代码作为JSON发送到服务器:Javascript 在Chrome和Firefox中更新数据,但不在InternetExplorers 7、8和;9,javascript,json,asp.net-mvc-3,knockout.js,Javascript,Json,Asp.net Mvc 3,Knockout.js,我不确定这是一个淘汰赛问题,一个JSON问题还是其他问题,所以我将解释这一切 我有一个显示大量用户的Web网格。我可以使用AJAX弹出窗口编辑这些成员。作为此窗口的一部分,我可以为特定用户分配角色。如下图所示: 这些角色是从下拉菜单中选择的,如果我想对一个用户应用多个角色,我可以添加额外的下拉菜单。我使用knockout的foreach绑定来实现这一点 现在,在我点击save之后,webgrid列会在所有浏览器中自动更新。然而,如果我编辑一个用户并给他们额外的角色,然后点击保存,然后再次尝试编
$.ajax({
type: 'POST',
dataType: 'json',
url: '/Person/Save',
dataType: 'html',
data: JSON.stringify(jsonObj),
contentType: 'application/json; charset=utf-8',
success: function(data) {
dlg.dialog("close");
$('#myUserGrid').html(data);
},
error: function(data) {
console.debug(data);
}
});
弹出窗口视图中的相关html和淘汰代码如下所示:
<tr>
<td class="roleList" colspan="2">
<table data-bind="foreach: RoleDdList">
<tr>
<td class="label">
* Role:
</td>
<td>
<select data-bind="options: $root.Roles, value: $data.role, optionsValue:'Id', optionsText:'Name'"> <!--,optionsCaption: 'No Role' -->
</select>
</td>
</tr>
<tr>
<td></td>
<td><a href="#" data-bind="click: $root.deleteRole, visible: $index()!=0">Delete Role</a></td>
</tr>
</table>
</td>
<tr></tr>
您知道这个问题的根源是什么吗?您从ajax调用返回了什么数据?ajax调用将数据从弹出窗体发布到控制器操作“数据”表示从该操作返回的信息,该操作是html partialView
var Role = function(roleId, roleName) {
this.Id = roleId;
this.Name = roleName;
};
// Class to represent a row in the Roles DropDown List
function RoleDropDown(initialRole) {
var self = this;
self.role = ko.observable(initialRole);
}
$(function () {
function myViewModel() {
var self = this;
//code relating to other fields
// Role Code
self.Roles = new ko.observableArray();
@{
foreach (var pair in Model.RolesList)
{
@:self.Roles.push(new Role(@pair.Key,"@pair.Value"));
}
}
// List of Role DropDowns
self.RoleDdList = ko.observableArray([
new RoleDropDown(self.Roles()[0])
]);
// Add a Role (code for link on form)
self.addRole = function() {
self.RoleDdList.push(new RoleDropDown(self.Roles()[0]));
};
// Delete a Role
self.deleteRole = function(num) {
self.RoleDdList.remove(num);
};
//
@{
if(@Model.Roles!=null)
{
@:self.RoleDdList.pop();
foreach (var selectedRole in Model.RoleNumbers)
{
@:self.RoleDdList.push(new RoleDropDown(@selectedRole));
}
}
}
}
vm = new myViewModel();
ko.applyBindings(vm);
$.validator.unobtrusive.parse('#formUser');
});