语义问题.意外令牌:



我正在尝试使用jQuery做一些AJAX,但我似乎遇到了问题。

在我的 Safari 检查器中,我变得Semantic IssueUnexpected 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 }
}

最新更新