我使用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
}
有什么想法吗?提前谢谢!
答案 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