ajax jquery提交带有icontact表单

时间:2014-07-07 20:27:28

标签: jquery ajax icontact

我正在尝试使用带有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>

1 个答案:

答案 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会让你获得成功警告。