2010-05-17 73 views
0

我想提交删除链接点击通过http post到我的asp.net mvc控制器。虽然我下面的代码适用于Chrome,但它在IE8中不起作用。任何指针都会非常有用。jQuery .submit()与IE8的困境

设置:

  • 浏览器:IE8
  • jQuery的:1.4.1
  • MVC:2.0

的删除链接是: -

<a title="Delete contact" href="/Contacts/Delete/<%= Model.Contact.Id %>" class="delete" rel="Are you sure you want to delete <%= Html.Encode(Model.Contact.Name) %>?">Delete</a> 

和点击删除的jQuery处理程序是

$("a.delete").click(function() { 
if (confirm($(this).attr("rel"))) { 
    var form = "<form method='POST' action='" + $(this).attr("href") + '" style='display:none;'></form>"; 
     $(form).submit(); 
    } 
    return false; }); 
+3

“它不工作”的问题是困难的。它怎么不起作用?你会得到什么错误?它在IE8中做了什么?如果它向您显示脚本错误,您是否知道IE中断哪些行? – 2010-05-17 05:31:22

+1

您的报价混杂在一起。你说它适用于Chrome,所以也许是复制/粘贴错误?同样,jQuery 1.4允许您使用像这样的属性来分解元素创建 - '$(“

”,{“method”:“post”,action:“...”,style:“..”})''。与引用汤相比,这是一种更清洁的方式。 – 2010-05-17 05:40:26

回答

1

在提交之前,您是不是应该将表单附加到body中?不知道它如何在没有这样的Chrome,但尝试做这样的事情,但尝试做这样的事情 -

$('<form/>', { 
    action: "...", 
    method: "...", 
    style: "...", 
}) 
.appendTo("body") 
.submit(); 
+0

谢谢Chetan。这工作! – 2010-05-17 05:55:26

2

IE不会在表单中提交禁用的元素,所以也许它与空表单一样。

这不完全是一个解决方案,但我会这样做,而不创建一个窗体。你可以只用$就$。员额Url.Action(...)构建所需的URL,然后调用document.reload()

+1

这就是我要做的。使用'$ .post'调试和管理更容易 – 2010-05-17 05:34:43

+0

*“IE不会提交表单中禁用的元素......”*浏览器不会在表单中提交禁用的元素 - 至少,如果他们想遵循规范,其中说不要:http://www.w3.org/TR/html5/forms.html#form-submission-algorithm(这是一个链接到HTML5规范,但这是旧的,旧的行为) – 2010-05-17 05:42:21