我正在开发一个django网络应用程序,我希望在其中进行注册过程。在这个注册过程中,我当然有一个要求提供姓名,电子邮件和密码的表格。我想做的是,通过邮寄将表格发送到2个不同的地方。其中一个当然是保存密码等的注册数据库,另一个是Emencia通讯应用程序。在它有帮助的情况下,Emencia只需要电子邮件和名称(可选)。
那么我怎么能只用一个表格,两个地方发送它,并且只取一些表格的数据而不是全部?
谢谢!
答案 0 :(得分:1)
虽然我同意更好的方法是在服务器端处理这个问题,但我要纠正,将相同的表单提交到不同的服务器端脚本是非常可能。
有关脚本和一些演示,请参阅以下页面: How to create a multi-submit form
适用于IE,Firefox和Chrome。
答案 1 :(得分:0)
你做不到。无法将表单发送到两个资源。
您可以做的是将您的注册脚本中的HTTP请求发送到新闻稿脚本,例如使用urllib2。
答案 2 :(得分:0)
要做到这一点,你必须使用Javascript& AJAX
答案 3 :(得分:0)
以下是jQuery的解决方案......
$("input:submit").click(function(e) {
e.preventDefault();
// javascript validation
// run this if validation succeeds
$.ajax({
url: "url to emencia newsletter",
type: 'post',
data: "Email=" + $("#emailField").val() + "&Name=" + $("#nameField").val(),
success: function(result) {
// do stuff
$('form').submit();
}
});
// could also go here if you don't want the success callback -- $('form').submit();
});
那么您点击提交按钮会发生什么。 e.preventDefault告诉浏览器停止提交表单。然后,您运行ajax请求以提交给emencia。成功后,它会提交原始表格。我不确定您是否需要将表单提交成功,或者只是将其放在ajax请求之后。我认为这不重要。
答案 4 :(得分:0)
这种技巧过去常用于大多数浏览器,但......它似乎只能在Firefox中使用。在两个提交之间添加延迟使其在IE中工作,但不能在Chrome中工作。我真的很惊讶它仍然适用于Firefox:)
<html>
<body>
<form method='post' action='place1.php' onsubmit='this.action="place1.php";this.submit();this.action="place2.php";this.submit();return false;'>
<input type='text' name='thing' value='something' />
<input type='submit' value='send' />
</form>
</body>
</html>