Загадочная ошибка JQuery AJAX требует больше аргументов - PullRequest
4 голосов
/ 07 ноября 2010

Я использую ajax jQuery для регистрации пользователей. Я использую почти точный код ниже, чтобы делать подобные вещи по всему сайту, и все же по какой-то причине код ниже выдает эту ошибку в Firebug.

Ошибка:

uncaught exception: [Exception... "Not enough arguments" nsresult: "0x80570001 (NS_ERROR_XPC_NOT_ENOUGH_ARGS)" location: "JS frame :: <a href="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js" rel="nofollow">http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js</a> :: 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)}
    });
},

Callback:

onAUserSignedUp : function (ret) {

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

Есть идеи? Заранее спасибо!

Ответы [ 3 ]

9 голосов
/ 07 ноября 2010

Проблема где-то в коде, который преобразует объект данных.Поскольку мы не можем видеть весь код, где точно не ясно.Вот что вы делаете, измените код следующим образом:

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

Посмотрите, работает ли это, начинает ли добавлять элементы, пока не обнаружите проблему.

3 голосов
/ 07 ноября 2010

Не думаю, что это что-то исправит, но вы должны изменить:

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

до

success: callback

Потому что у вас уже есть обратный вызов в качестве указателя. Нет причин делать это с другим.

0 голосов
/ 09 декабря 2012

Просто на голову любому, кто сталкивался с этим ... Я искал причину, по которой это произошло за 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'),

Надеюсь, это поможет сэкономить время!
С наилучшими пожеланиями, Сагив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...