我正在尝试使用带有icontact的Ajax ..我的代码使表单提交但是它显示了一条错误消息,尽管表单工作且详细信息已放入列表中。
$('.error').hide();
$('.erroremail').hide();
$('#successcontainer').hide();
function verifyRequired()
{
var eReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/; // regex to check valid email
var email = $('input[name="fields_email"]').val();
var name = $('input[name="fields_fname"]').val();
var phone = $('input[name="fields_phone"]').val();
var data = $("#form-popup").serialize()
if (email == "") {
$('input[name="fields_email"]').focus();
$('.error').show();
return false;
} else if (!eReg.test(email)) {
$('input[name="fields_email"]').focus();
$('.erroremail').show();
return false;
}
else if (name == "") {
$('input[name="fields_name"]').focus();
$('.error').show();
return false;
}
else if (phone == "") {
$('input[name="fields_phone"]').focus();
$('.error').show();
return false;
}
else {
$.ajax({
url: "https://app.icontact.com/icp/signup.php",
type: "POST",
data: data,
success: function(){
alert('success')
},
error: function(){
alert('failure')
},
});
return false;
}
}
所以表格提交细节很好,但显示失败消息?
所以我几乎在那里,有人知道为什么吗?
干杯
这里的表格也是
<form id="form-popup" method="post" action="" name="icpsignup" accept-charset="UTF-8" onsubmit="return verifyRequired();" >
<input type="hidden" name="redirect" value="http://www.icontact.com/www/signup/thanks.html">
<input type="hidden" name="errorredirect" value="http://www.icontact.com/www/signup/error.html">
<input type="text" name="fields_fname" class="input" id="name" placeholder="Full Name" />
<input type="text" name="fields_email" class="input" id="email" placeholder="Email Address" />
<input type="text" name="fields_phone" class="input" id="phone" placeholder="Telephone" />
<input type="submit" id="submit" />
<input type="hidden" name="listid" value="xxxxxxx">
<input type="hidden" name="specialid:xxxxx" value="xxxx">
<input type="hidden" name="clientid" value="xxxxxx">
<input type="hidden" name="formid" value="xxxx">
<input type="hidden" name="reallistid" value="1">
<input type="hidden" name="doubleopt" value="0">
</form>
答案 0 :(得分:0)
我已在本地服务器上运行您的代码,但我没有发现任何语法错误。
使用您的代码时遇到的问题是“阻止跨源请求”。
浏览器不允许对其他域的AJAX请求,如果您尝试使用网站app.icontact.com(或者可能是icontact.com)上的表单,它将有效。
如果您不能使用icontact.com作为表单,那么我建议您编写一个PHP代码(在我们的例子中是服务器端语言)来处理jsonp
。这是跨源策略的解决方法。
将dataType:jsonp
添加到$.ajax
$.ajax({
url: "https://app.icontact.com/icp/signup.php",
type: "POST",
dataType: "jsonp",
data: data,
success: function(){
alert('success')
},
error: function(){
alert('failure')
},
})
执行上面的代码给了我一个来自signup.php的语法错误,所以我假设正确处理jsonp会让你获得成功警告。