1

我正在尝试使用 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;
}
4

3 回答 3

3

您似乎正在将一个函数传递给$.ajax(). 我认为你的意思是传递一个对象。取下function()这块,你应该很高兴。

于 2012-11-17T23:51:29.260 回答
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();
    }
});
于 2012-11-17T23:51:54.423 回答
0

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

function(){
    url: "emailer/storeEmail.ajax.php",
    type: "POST",
    data: { "email" : email }
}

这是一个匿名函数,但内容不是代码,而是对象文字的内容。

当它被解释为代码时,它url:变成了一个标签,"emailer/storeEmail.ajax.php"变成了一个表达式。之后是,分隔两个表达式的运算符,因此它需要另一个表达式,而是来了type:。它被解释type为一个变量,:它后面的标记是unexpeted。

只需删除function()以使其成为对象文字:

{
    url: "emailer/storeEmail.ajax.php",
    type: "POST",
    data: { "email" : email }
}
于 2012-11-18T00:00:25.800 回答