javascript - jQuery - 发布时非法调用

标签 javascript jquery

我正在创建一个联系表单,当我执行它时,我收到以下错误:

Uncaught TypeError: Illegal invocation

这是我的代码,似乎找不到问题所在。 如果您想实时查看问题:Link goes here

$(document).ready(function() {

var submit      = $('#contact input[type="submit"]');

var name        = $('#contact input[name="name"]');
var email       = $('#contact input[name="email"]');
var company     = $('#contact input[name="company"]');
var phone       = $('#contact input[name="phone"]');
var skype       = $('#contact input[name="skype"]');
var budget      = $('#contact ul.budget span.value');
var message     = $('#contact textarea');

// validation
$(submit).click(function() {
    event.preventDefault();
    var proceed = true;

    if( name.val().length == 0 ) {
        $(name).addClass('animated bounce');
        proceed = false;
    }
    if ( email.val().length == 0 ) {
        $(email).addClass('animated bounce');
        proceed = false;
    }
    if ( budget.hasClass('notset')) {
        $('.budget').addClass('animated bounce');
        proceed = false;
    }
    if ( message.val().length == 0 ) {
        $(message).addClass('animated bounce');
        proceed = false;
    }
    if ( name.val().length == 0 || email.val().length == 0 || budget.hasClass('notset') || message.val().length == 0 ) {
        setTimeout(function () { 
            $('input, .budget, textarea').removeClass('animated bounce');
        }, 1000);
    }

    // if form is correctly filled
    if(proceed) {

        post_data = {'cName':name, 'cEmail':email, 'cCompany':company, 'cPhone':phone, 'cSkype':skype, 'cBudget':budget, 'cMessage':message};

        $.post('contactsubmit.php', post_data, function(response){  

            if(response.type == 'error')
            {
                output = response.text;
            }else{
                output = response.text;
            }

            alert(output);
        }, 'json');
    }
});

});

我以前用过它,现在我对验证做了一些更改,只是稍微清理了一下,它就开始让我困惑。

感谢我能得到的所有帮助。

谢谢!

最佳答案

您的发布数据如下所示

post_data = {'cName':name, 'cEmail':email, 'cCompany':company, 'cPhone':phone, 'cSkype':skype, 'cBudget':budget, 'cMessage':message};

请注意,您引用的所有变量都是 jQuery 对象

var name        = $('#contact input[name="name"]');
var email       = $('#contact input[name="email"]');
var company     = $('#contact input[name="company"]');
var phone       = $('#contact input[name="phone"]');
etc ...

您无法使用 $.post 发送 jQuery 对象,这是“非法调用”,您可能需要该值

var post_data = {
    cName  : name.val(), 
    cEmail : email.val(), 
    etc ...
}

关于javascript - jQuery - 发布时非法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24975825/

相关文章:

javascript - Function 不是 AngularJS 中的函数

javascript - 访问 iframe 中的 facebook 页面被拒绝

javascript - 如何设置一个新类不适用于 Bootstrap 和 jQuery?

javascript - 如何使用 Javascript 变量作为 CSS 宽度的值?

php - 在 AJAX 中调用 PHP 脚本时出现错误消息 : Object not found!

jquery - 如何让无限数量的div彼此相邻显示

javascript - 如何使用 jQuery 创建图像超链接元素?

javascript - 检查视频是否能够在 iframe 中播放

javascript - 是否可以在 javascript 中为文本设置渐变动画?

jquery - 根据从下拉列表中选择的 ID 重新加载页面