Jquery 将表单元素更改为其他元素或将其删除,同时保留所有子元素
我已经将Asp.net MVC与Sharepoint站点集成。它工作得很好。但我也在使用默认的Sharepoint母版页(Jquery 将表单元素更改为其他元素或将其删除,同时保留所有子元素,jquery,dom-manipulation,Jquery,Dom Manipulation,我已经将Asp.net MVC与Sharepoint站点集成。它工作得很好。但我也在使用默认的Sharepoint母版页(~masterurl/default.master)。问题在于,此特定母版页将整个页面包装在表单元素中,而所有Sharepoint页面都只是普通的Asp.net Web表单页面 我的MVC内容应该有自己的表单和我想提交给服务器的输入元素。Ajax调用显然没有问题。如果保留原始的form元素,则无法使用$(“form”).serializeArray()。但尽管如此,正常的回发
~masterurl/default.master
)。问题在于,此特定母版页将整个页面包装在表单
元素中,而所有Sharepoint页面都只是普通的Asp.net Web表单页面
我的MVC内容应该有自己的表单
和我想提交给服务器的输入元素。Ajax调用显然没有问题。如果保留原始的form
元素,则无法使用$(“form”).serializeArray()
。但尽管如此,正常的回发还是有问题的,因为提交事件上有WebForm功能,它们会向服务器发送太多数据
我将使用普通回发和Ajax回发。主要问题是普通回发
因此,我有两种可能都应该在$(document.ready()
)上运行:
表单
元素前面加上div
,将其内容移动到此div,然后删除表单
form
元素更改为div
。这在浏览器处理方面可能会更快,但我不知道怎么做div
元素中。当用户想要提交我的表单时(div
无论如何都不是表单),我可以:
$(“div.form”).serializeArray()
$.ajax({
url: "Path/Action",
type: "post",
data: $("#someContainer :input").serialize(),
success: function(data) {
//do something
}
});
或较短的版本:
这不需要任何
生成或其他技巧,只需要一个普通的jQuery AJAX帖子(或获取,无论需要什么)。你不需要
来发送AJAX帖子,你是用jQuery还是MVC生成的表单发布的吗?@Nick:这就是我说的“AJAX调用显然没有那么大问题”的意思。我严格使用jQuery for Ajax。但是像$(“form”).serializeArray()
这样的操作仍然会有问题,因为我不能使用它。你可以在一组元素上调用.serialize()
,这是我的观点:),例如$(“#mycontainer:input”).serialize()
:@Nick:Good point。谢谢我编辑了我的问题,这是进行Ajax回发的方法。这里的主要问题当然是定期回发。这里还有另一个问题:如果定期回发某些Sharepoint功能(因为它出现在我的页面上是因为母版页),该怎么办?我添加的输入元素会扰乱Sharepoint内部流程吗?@Robert-不会,只要名称是唯一的……它就不会关心它们。那么定期回发呢?@Robert-我想回到为什么您需要这两个元素的问题上……在什么情况下,您希望定期回发而不是ajax回发?如果重定向是您唯一的动机,那么您可以在回调中这样做,总体来说可能更简单。老实说,把东西塞进SharePoint并不是100%干净的……我们所能做的就是让它尽可能干净。
$.post("Path/Action", $("#someContainer :input").serialize(), function(data) {
//do something
});