神秘的jQuery AJAX错误需要更多的参数

时间:2010-11-06 21:19:50

标签: javascript jquery ajax firefox

我使用jQuery的ajax来注册用户。我几乎使用下面的确切代码在我的网站上做类似的东西,但由于某种原因,下面的代码在Firebug中抛出此错误。

错误:

uncaught exception: [Exception... "Not enough arguments" nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)" location: "JS frame :: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js :: add :: line 5437" data: no]

呼叫:

lzaUserAPI.doAUserSignup(signupUsername, signupPassword, signupEmail, signupFullname, signupCompanyName, signupWebsite, signupPhone, lzaSigninup.onAUserSignedUp);

Ajax功能:

doAUserSignup : function(username, password, email, fullname, companyname, website, phone, callback){

    // Add to server
    var paras = {cmd : 'doAUserSignup', us: username, ps: password, em: email, flnm: fullname, cpnm: companyname, wbst: website, phne: phone};

    $.ajax({
        url: lzaUserAPI.m_url,
        dataType: "json",
        data: paras,
        success: function(ret){callback(ret)}
    });
},

回调:

onAUserSignedUp : function (ret) {

    alert ('yea!!!');
    //Todo: log them in
}

有什么想法吗?提前谢谢!

3 个答案:

答案 0 :(得分:9)

问题出在转换数据对象的代码中。因为我们无法看到所有代码到底哪些不清楚。这是你做的,改变这样的代码:

// var paras = {cmd : 'doAUserSignup', us: username, ps: password, em: email, flnm: fullname, cpnm: companyname, wbst: website, phne: phone};
var paras = {cmd : 'doAUserSignup'};

看看是否有效,如果它确实开始添加元素,直到找到问题为止。

答案 1 :(得分:3)

我不认为这会解决任何问题,但你应该改变:

success: function(ret){callback(ret)}

success: callback

因为您已将回调作为指针。没理由把它包裹起来。

答案 2 :(得分:0)

对于遇到这种情况的人来说只是一个正面...我找到了这个发生了2个小时的原因,然后才意识到我忘了添加

.attr('value')

在每个值的和:(

意思是我这样做了:

user_name: $('div#registrationForm').find('input#user_name'),
first_name: $('div#registrationForm').find('input#first_name'),

而不是:

user_name: $('div#registrationForm').find('input#user_name').attr('value'),
first_name: $('div#registrationForm').find('input#first_name').attr('value'),

希望这有助于节省时间! 最诚挚的问候,Sagive