gpt4 book ai didi

javascript - 提交一个表单和 Ajaxing

转载 作者:行者123 更新时间:2023-11-30 12:53:59 25 4
gpt4 key购买 nike

我使用下面的代码提交表单在aweber 电子邮件列表中注册(addlead.pl 只是一个注册脚本)。这是我想要完成的:用户提交表单 - 它将他注册到一个 Weber 电子邮件列表中(使用许多表单字段中的两个),因为它是注册表单,然后用户将被重定向到正常的表单操作 url,其中包含来自表单(所有字段)的发布信息

$('#redeemform').submit(function() {
var nameVal = $(this).find('input[name="custname"]').val();
var emailVal = $(this).find('input[name="custemail"]').val();

$.post('http://www.aweber.com/scripts/addlead.pl', {
meta_web_form_id: '1234',
meta_split_id: '',
listname: 'listname',
redirect: '',
meta_adtracking: 'newsletter',
meta_message: '1',
meta_required: 'name,email',
meta_tooltip: '',
email: emailVal,
name: nameVal
});



alert("thank you"); //<<magic line
return true;

});

代码有效,但仅适用于魔术线 - 警告“谢谢” - 如果没有这条线,它只会提交到默认表单操作,而不是注册到 aweber。我发现如果我尝试提交表单(返回 true)并同时发送这样的 POST 请求 - 网站将刷新得太快并忽略其中一个请求。问题是我如何在没有警报的情况下做到这一点/这条线路有一些固定的延迟。是否有某种奇特的命令?

最佳答案

  1. 绝对最好的解决方案是让您的表单请求在服务器上使用 CURL 或类似方式调用 weber

  2. 因为您不能将 Ajax 连接到另一个域,所以如果您要在客户端上运行它,您需要更有创意

所以在提交事件中我们

  1. 将目标更改为 hiddenframe2
  2. 将 aweber 表单提交给 hiddenframe1
  3. 让主窗体提交到hiddenframe2

现在您需要在主表单的结果中返回类似

<script>top.location.replace("thankyou.html");</script>

假设您的表单将请求发送到 html 来自的同一台服务器

$('#redeemform').on("submit",function() {
$(this).prop("target","hiddenframe2");

if (!$("#hiddenframe1")) {
$("<iframe/>",{"id":"hiddenframe","name":"hiddenframe1"})
.css("display","none")
.appendTo("body");
}
if (!$("#hiddenframe2")) {
$("<iframe/>",{"id":"hiddenframe","name":"hiddenframe2"})
.css("display","none")
.appendTo("body");
}
var nameVal = $(this).find('input[name="custname"]').val();
var emailVal = $(this).find('input[name="custemail"]').val();

$("<form>",{"action":"http://www.aweber.com/scripts/addlead.pl",
"target":"hiddenFrame1"})
.append("<input/>",{meta_web_form_id: '1234'})
.append("<input/>",{meta_split_id: ''})
.append("<input/>",{listname: 'listname'})
.append("<input/>",{redirect: ''})
.append("<input/>",{meta_adtracking: 'newsletter'})
.append("<input/>",{meta_message: '1'})
.append("<input/>",{meta_required: 'name,email'})
.append("<input/>",{meta_tooltip: ''})
.append("<input/>",{email: emailVal})
.append("<input/>",{name: nameVal})
.submit();
});

如果您能够将 Ajax 转换为 Weber,这本可以做到,但由于跨域脚本,您无法做到这一点。如果他们支持 JSONP/CORS,您无论如何都可以这样做

$('#redeemformButton').on("click",function() {
var $form = $('#redeemform');
var nameVal = $form.find('input[name="custname"]').val();
var emailVal = $form.find('input[name="custemail"]').val();

$.post('http://www.aweber.com/scripts/addlead.pl', {
meta_web_form_id: '1234',
meta_split_id: '',
listname: 'listname',
redirect: '',
meta_adtracking: 'newsletter',
meta_message: '1',
meta_required: 'name,email',
meta_tooltip: '',
email: emailVal,
name: nameVal
},function() {
$form.submit();
});
});

还有一个

<input type="button" id="redeemformButton" value="Sign up and submit" />

关于javascript - 提交一个表单和 Ajaxing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19930829/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com