2010-11-06 4 views
4

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

Ошибка:

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

Callback:

onAUserSignedUp : function (ret) { 

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

Любые идеи? Заранее спасибо!

+0

Я не могу найти в этом ничего плохого. Можете ли вы разместить его на тестовом сервере, чтобы мы могли посмотреть? –

+0

Извините, что понял и удалил комментарий, но потом увидел ваш ответ – 2010-11-06 21:29:29

+0

@Amir, извините - прямо сейчас у меня нет тестового сервера. Один дополнительный ключ, что закомментировать '$ .ajax ({ URL: lzaUserAPI.m_url, DATATYPE: "JSON", данные: пункты, успех: функция (RET) {обратный вызов (в отставке)} });' заставляет его не бросать ошибку. :) Любые вести можно продолжать? – Kyle

ответ

9

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

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

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

+0

Мне любопытно, если это работает, потому что это не имеет смысла, то почему комментирование вызова ajax не вызывает ошибок. –

+4

! Это полностью сработало для его отладки. Оказалось, что один из параметров передавался как объект DOM, а не значение, но пока я не сделал то, что, по вашему мнению, было слишком сложно обнаружить в коде. Благодаря!! – Kyle

+0

@Emile: Отлично - посмотрите на код, который я мог видеть, это было что-то в преобразовании ... – Hogan

3

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

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

в

success: callback 

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

+0

Я тоже это видел, но вы должны изменить его на 'success: callback (ret)' right? – Hogan

+0

no, при вызове функции, которую вы вызываете callback() при передаче функции другому, вы выполняете обратный вызов без(). –

+0

+1 Полезно знать – Kyle

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

Смежные вопросы