我正在开发一个 django web 应用程序,并且有一个 html 表单,提交表单时我需要做两件事:在应用程序的数据库中创建一条记录并将收集到的一些值发布到另一个网站(例如支付网站)。
我遇到的问题是让表单同时做两件事。我知道 HTML 表单只能有一个操作,并且我在 StackOverflow 上阅读了一些关于使用 javascript 让表单执行 2 个或更多操作的帖子,但是到目前为止我尝试的所有方法都不适用于这种情况. 他们似乎都只能采取一种行动。
这就是我的 django 模板现在的样子:
{% extends "some other template" %}
{% block content %}
<div>
...
<form id=form1" name="trans_form" method="POST" >
...
<!--DATA TO POST TO PAYMENT SITE-->
<input type="hidden" name="transaction_id" value="some value" />
<input type="hidden" name="transaction_amount" value="some value"/>
<input type="hidden" name="customer_id" value="some value" />
<input type="hidden" name="customer_name" value="some value" />
<!--DATA TO POST TO PAYMENT SITE-->
...
<!--DATA TO POST TO APP DATABASE-->
<input type="hidden" name="user" value="{{ user.id }}">
<input type="hidden" name="type" value="CC">
<input type="hidden" name="ref_no" value="{{ ref_no }}">
Amount: <input type="text" name="amount" id="id_amount" required />
Ref ##: <span>{{ ref_no }}</span>
Date: <span>{{ cur_date|date:'d/m/Y' }}</span>
<a href="#" id="pay-btn" class="button" onclick="submitForm();">Submit</a>
<!--DATA TO POST TO APP DATABASE-->
...
</form>
...
</div>
{% endblock %}
{% block script %}
<script>
function submitForm()
{
createRecord(document.forms["trans_form"]);
sendToPay(document.forms["trans_form"]);
}
function sendToPay(f)
{
f.action= "www.paymentsite.com";
f.target = null;
f.onsubmit = null;
f.submit();
}
function createRecord(f)
{
f.action = "url to view that creates the record in database";
f.target = "_blank";
f.onsubmit = null;
f.submit();
}
</script>
{% endblock %}
你怎么看?我在努力实现不可能吗?如果没有,请指出我正确的方向。谢谢。