我正在创建一个联系表单,当我执行它时,我收到以下错误:
未捕获的TypeError:非法调用
这是我的代码,似乎无法找到什么错误。 如果您希望直播问题: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');
}
});
});
我之前使用过它,现在我对验证进行了一些更改,只是稍微清理了一下它就开始弄乱我了。
感谢我能得到的所有帮助。
谢谢!
答案 0 :(得分:1)
您的帖子数据看起来像这样
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 ...
}
答案 1 :(得分:1)
post_data
对象上的值是jQuery对象而不是字符串:
post_data = {'cName':name, 'cEmail':email, 'cCompany':company, 'cPhone':phone, 'cSkype':skype, 'cBudget':budget, 'cMessage':message};
相反,你应该得到它的价值:
post_data = {
'cName': name.val(),
'cEmail': email.val(),
'cCompany': company.val(),
'cPhone': phone.val(),
'cSkype': skype.val(),
'cBudget': budget.val(),
'cMessage': message.val()
};
但是使用.serialize()提交表单字段值有一种更简单的方法:
$.post('contactsubmit.php', $('#contact').serialize(), function(data) {
}, 'json');