我有一个页面,我希望在其中填写一个表单,一个javascript文件验证信息,将信息发送到一个php文件以邮寄给我,然后启动下载。问题是,我可以让javascript文件发送邮件或允许下载文件,但不能两者都有。
有问题的代码如下所示:
else {
document.dlform7.action = "http://www.myurl.com/c/post7.php" ;
document.dlform7.submit();
window.location.assign(url);
}
有没有一种方法(也许是使用负载)可以让这两个操作同时发生?
编辑:
ajax选项:
else {
$.ajax({
url: "http://www.myurl.com/c/post7.php";
type: "POST",
data: data,
cache: false,
success: function () {
window.location.assign(url);
document.dlform7.submit();
},
我认为您需要调整表单的提交处理程序。IRC,提交事件将导致页面重新加载。
您将希望为表单创建一个提交事件处理程序,该处理程序将对php脚本进行ajax调用。然后让它返回false以阻止页面重新加载。然后,您应该能够同时下载文件。
更新
如果你想下载文件,无论php脚本发送电子邮件发生了什么,你可以做以下操作:
else {
$.ajax({
url: "http://www.myurl.com/c/post7.php";
type: "POST",
data: $(document.dlform7).serialize(),
cache: false,
});
window.location.assign(url);
ajax方法是表单提交。它不会中断代码流,因此重定向将在请求之后发生。(我非常确信这会奏效)。
如果您想等待php脚本成功运行,那么您可以将代码移动到成功回调中,如下所示:
else {
$.ajax({
url: "http://www.myurl.com/c/post7.php",
type: "POST",
data: $(document.dlform7).serialize(),
cache: false,
success: function () { window.location.assign(url); }
});
当然,您也可以更改php页面以发送电子邮件,然后在评论中提到要下载的文件。