所以我在任何其他浏览器中都有一个“删除记录按钮”,它正常运行。从SQL中删除记录,并正确更新页面。我的想法是IE没有用js事件更新页面,并从视图中删除记录。如果我点击一次,不更新页面,两次它。点击一次,然后手动刷新页面,它正确地从视图中消失。有没有人听说IE这样做?调试器中没有任何内容告诉我错误。删除事件在下面,如果这是可能被错误处理的地方。 IE需要一个特殊的过滤器来处理这样的事件吗?谢谢!
// button in question creation
function create_delete_button( oObj ) {
return '<input type="button" value="Delete" onclick="DeleteItem(' + oObj.aData[0] + ')"/>';}
// post to db the deletion
function DeleteItem( id ) {
$.post( "/Data/DeleteItem?Id=" + id, GetUpdatedItems() );}
答案 0 :(得分:1)
您展示的代码不会在任何浏览器中以任何方式更新页面 - 它根本不包含任何DOM操作或导航。 Ajax(我假设$.post()
是jQuery Ajax方法)的重点在于它在不刷新页面的情况下发出请求。
所以我认为问题必须是你没有展示的GetUpdatedItems()
函数,特别是你调用它的方式。请尝试删除GetUpdatedItems
之后的括号,如下所示:
$.post( "/Data/DeleteItem?Id=" + id, GetUpdatedItems );
// parentheses removed from here ^
jQuery的$.post()
method期望回调函数作为其第二个参数。也就是说,您应该传递对函数的引用,然后jQuery将在帖子完成后为您调用该函数。
您在问题的代码中正在做的是立即调用函数并将其结果传递给$.post()
,这意味着GetUpdatedItems()
之前执行 你做帖子删除项目。如果GetUpdatedItems()
也执行了ajax请求,那么您无法保证首先返回哪个请求的时间。
“调试器中没有任何内容告诉我错误。”
我发现的特定问题不是JavaScript错误,因此不会在调试器中报告。它是有效的代码,它没有你想要的效果。