语义问题。意外的标记 :?

时间:2012-11-17 23:49:01

标签: jquery ajax

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

在我的Safari检查器中,我收到Semantic IssueUnexpected Token :

我只是愚蠢吗?它似乎发生在data:函数的$.ajax行:

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;
}

3 个答案:

答案 0 :(得分:3)

您似乎正在将功能传递给$.ajax()。我想你想要传递一个物体。删除function()件,你应该好好去。

答案 1 :(得分:1)

您不传递函数到$ .ajax,传递地图(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();
    }
});

答案 2 :(得分:0)

您收到错误的原因是此代码:

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 }
}