所以我正在创建一个使用ajax和PHP发送电子邮件的联系表单。
我似乎在运行此脚本时出错。
错误:未捕获的语法错误:意外的令牌。
使用chrome BTW。
我也有一个PHP文件,但我不认为这是相关的,我可以在需要时添加它。
$(function() {
var form = $('#ajax-contact');
var formMessages = $('#form-messages');
var formData = $(form).serialize();
$(form).submit(function(event) {
event.preventDefault();
});
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: formData
});
.done(function(response) {
$(formMessages).removeClass('error');
$(formMessages).addClass('success');
$(formMessages).text(response);
$('#name').val('');
$('#email').val('');
$('#message').val('');
})
.fail(function(data) {
$(formMessages).removeClass('success');
$(formMessages).addClass('error');
if (data.responseText !== '') {
$(formMessages).text(data.responseText);
} else {
$(formMessages).text('Oops! An error occured and your message could not be sent.');
}
});
});
答案 0 :(得分:0)
这种情况正在发生,因为您通过添加分号来终止ajax调用,然后调用.done()
。正确的语法是:
$.ajax( "..." )
.done(function()
{
alert("success");
});
答案 1 :(得分:0)
在$ .ajax之后删除分号,我可以告诉你想要在提交时做一个ajax,但是ajax在提交事件之外,将代码放在提交事件中
var form = $('#ajax-contact');
var formMessages = $('#form-messages');
$(form).submit(function(event) {
event.preventDefault();
var formData = $(form).serialize();
$.ajax({
type: 'POST',
url: $(form).attr('action'),
data: formData
})
.done(function(response) {
$(formMessages).removeClass('error');
$(formMessages).addClass('success');
$(formMessages).text(response);
$('#name').val('');
$('#email').val('');
$('#message').val('');
})
.fail(function(data) {
$(formMessages).removeClass('success');
$(formMessages).addClass('error');
if (data.responseText !== '') {
$(formMessages).text(data.responseText);
} else {
$(formMessages).text('Oops! An error occured and your message could not be sent.');
}
});