0

我正在尝试将 Ajax 与 icontact 一起使用。我的代码使表单提交,但它显示了一条错误消息,尽管表单正常工作并且详细信息已放入列表中。

$('.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>
4

1 回答 1

0

我已经在本地服务器上运行了您的代码,但没有发现任何语法错误。

我在使用您的代码时遇到的问题是“跨域请求被阻止”。

浏览器不允许对另一个域的 AJAX 请求,如果您尝试使用站点 app.icontact.com(或者可能是 icontact.com)上的表单,它将起作用。

如果您不能使用 icontact.com 作为表单,那么我建议您编写一个 PHP 代码(在我们的例子中是服务器端语言)来处理jsonp. 这是跨域策略的解决方法。

添加数据类型: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 会给你成功警报。

于 2014-07-07T21:04:27.660 回答