2010-04-14 80 views
2

我已经搜索该网站,我发现各种解决方案,其中大部分使用如何防止表单在提交后重定向?

return false; 

问题是,我使用这段代码提交表单提示:

$(function() { 
    $("#snd").click(function() { 
     var dendar = "http://" + $("#inpt").val() + ":" + $("#pwd").val() + "secretsite.lol/something.xml"; 
     $("#formen").attr("action", dendar); 
     $("#formen").submit(); 
     alert(dendar); 
     return false; 
    }); 
}); 

该警报只是让我知道,表格已提交..

谢谢你们!

+0

你的意思是你如何阻止表单提交? – Mathew 2010-04-14 16:19:10

+0

我加了一个回复,但是当你看到你的(过于复杂的代码)代码时,我不确定你想要做什么。主要是由于缺少标记。 – 2010-04-14 16:26:49

+0

没有阻止它提交,我需要它提交,但没有重定向。当我点击表单提交按钮时,我正被重定向到正在尝试发布的XML文件。问题是我收到后数据,所以我的表单被正确发布,这只是我想要阻止的重定向。 对不起,不清楚.. – Noor 2010-04-14 17:04:29

回答

3

刚刚使用POST的AJAX调用数据处理程序怎么样?这听起来像你想要的。

+0

我不确定,但AJAX只能发送数据到我发布的同一个服务器上这么久。如果是这样,那不是一个选项.. – Noor 2010-04-14 17:02:20

+0

你为什么要提交跨服务器?从JavaScript浏览器窗口几乎可以做任何事情,这取决于你想要做什么。请记住,广告服务会从客户端网络加载广告。你不认为服务器检索所有这些广告,并将它们注入到页面中吗? – jcolebrand 2010-04-14 17:16:01

+0

任何你可以用纯HTML完成的事情都可以用javascript完成。如果您现在可以提交给其他服务器,那么您可以将jquery.ajax发布到该服务器。 – jcolebrand 2010-04-14 17:18:52

4

您必须在submit()调用的事件处理程序中返回false,而不是点击处理程序。

$("#formen").attr("action", dendar); $("#formen").submit(
    function() { 
     return false; 
    } 
); 

正如其他人指出的,这将停止表单提交。你想要做的是收集表单数据并使用Ajax调用提交。

$ .post(url,{var1:value1,var2:value2 etc ...});

+0

嘿,谢谢你的回答! 要么我是愚蠢的,不知道如何拉这个或它不与我的代码工作。 这完全禁用我的提交,我没有得到发布的表单,并且警报也没有显示出来(我在返回语句之前放置了警报)。 – Noor 2010-04-14 16:59:52

+0

但是,它正是如此,它会禁用提交完全。显然你不是在问正确的问题。 – jcolebrand 2010-04-14 17:14:41

+0

对不起。我需要我的表单发送信息到一个网站,而不必重新定向。当我点击提交按钮时,我需要它来做这件事,发布信息并提醒我它已经完成了。 – Noor 2010-04-14 17:26:31

4

你无法阻止重定向,但你可以提交表单到(可能是隐藏的)IFRAME让你不离开当前页面

阿贾克斯会更好,如果帖子是在同一台服务器当前页面,你是不是发布文件数据

+0

我会尽力做到这一点,该职位是由一个网站,不属于我..谢谢! – Noor 2010-04-14 17:00:36

2

使用jQuery 1.4:

$("#formen").live("submit",function(e) { 
    e.preventDefault(); 
} 

这将防止从形式实际提交。然后你可以自由地处理应该发布的数据(使用ajax,在页面上打印某些内容......)。

+0

不太确定把它放在哪里,这是否取代提交代码行? – Noor 2010-04-14 17:01:14

+0

@noor在你想要的地方添加它,只要确保它被调用(例如在文档上准备就绪) – marcgg 2010-04-14 19:36:21