我正在尝试使用jQuery做一些AJAX,但我似乎遇到了问题。
在我的 Safari 检查器中,我变得Semantic Issue
和Unexpected Token :
。
我只是傻吗?它似乎发生在我的$.ajax
函数data:
行上:
function storeEmail ()
{
alert('Entered Function');
email = $('#emailField').val();
$('#emailField').hide();
console.log('Yep: '+email);
if(email.indexOf('@'))
{
$.ajax(function(){
url: "emailer/storeEmail.ajax.php",
type: "POST",
data: { "email" : email }
}).done(function(data){
if(data.resp == "success")
$('#emailSuccess').show();
else
{
$('#failedText').html('Error: '+data.resp);
$('#emailFailed').show();
}
});
}
else
{
$('#failedText').html('Error: Email is invalid!');
$('#emailFailed').show();
}
return false;
}
您似乎正在向$.ajax()
传递函数。我想你的意思是传递一个对象。取下function()
件,你应该很高兴。
你不把一个函数传递给$.ajax,你传递一个map(JavaScript对象)
$.ajax({
url: "emailer/storeEmail.ajax.php",
type: "POST",
data: { "email" : email }
}).done(function(data){
if(data.resp == "success")
$('#emailSuccess').show();
else
{
$('#failedText').html('Error: '+data.resp);
$('#emailFailed').show();
}
});
您收到错误的原因是以下代码:
function(){
url: "emailer/storeEmail.ajax.php",
type: "POST",
data: { "email" : email }
}
它是一个匿名函数,但内容不是代码,而是对象文本的内容。
当它被解释为代码时,url:
成为标签,"emailer/storeEmail.ajax.php"
成为表达式。之后是分隔两个表达式的,
运算符,因此它需要另一个表达式,但改为type:
.它将type
解释为变量,而它后面的:
令牌是未执行的。
只需删除function()
即可使其成为对象文字:
{
url: "emailer/storeEmail.ajax.php",
type: "POST",
data: { "email" : email }
}