我确信这可能是我不做的事情。运行livevalidation.js jquery插件(livevalidation.com)。它提供自定义函数回调。我正在尝试检查用户名是否可用。服务器端工作正常,我在数据变量中得到了正确的响应......
这是我的JS:
Validate.Username = function(value, paramsObj) {
var paramsObj = paramsObj || {};
var message = paramsObj.failureMessage || "Username is not available";
var isSuccess = true;
$.post("<?php echo fURL::getDomain(); ?>/ajax/username",
function(data) {
if (data.status === 'notavailable')
{
Validation.fail('oops, not available.');
}
});
};
我用它来调用它:
var username = new LiveValidation('username', { validMessage: curr_username + "is available!" });
username.add( Validate.Presence, { failureMessage: "Choose a username" });
username.add( Validate.Username, { failureMessage: "Username is not available." } );
我得到的问题是:
Uncaught ReferenceError: Validation is not defined
如果我将Validation.fail()
置于.post()
函数之外,则可以正常工作。所以我很确定这是因为它无法在.post()
函数中引用。
我尝试过使用回调函数
if (data.status === 'notavailable')
{
status_not_available();
}
我得到了同样的错误。
我意识到这可能非常简单,但任何帮助都会受到赞赏。提前谢谢。
答案 0 :(得分:0)
尝试将其从Validation.fail更改为Validate.fail
尝试将其包装在另一个函数中,并尝试将validateStatus(status)函数放在Validate.Username函数的内部和外部。下面的例子是
Validate.Username = function(value, paramsObj) {
var paramsObj = paramsObj || {};
var message = paramsObj.failureMessage || "Username is not available";
var isSuccess = true;
$.post("<?php echo fURL::getDomain(); ?>/ajax/username",
function(data) {
validateStatus(data.status);
});
function validateStatus(status){
if (status === 'notavailable'){
Validate.fail("not available");
}
}
};
答案 1 :(得分:0)
我遇到了同样的问题。 我发现了以下内容http://forum.jquery.com/topic/ajax-return-value-on-success-or-error-with-livevalidation,但未能使其正常运行。 但是,是的!在这个时刻,我制作了一个让它表现得好的som(糟糕的)javascript插件,我认为:)
这就是我使用的。
function check_avail(name, id, postUrl) { var dataVal = name+'='+$(id).val(); var isaccepted = '' $(id).next('div').remove(); $(id).after("Undersøger om "+name+" er ledigt
"); $.ajax({ url: postUrl, cache: false, type: 'post', dataType: 'json', data: dataVal, async: false, success: function(data) { if( data.success == 'true' ) { $('#'+name+'-availability').remove(); //return false; isaccepted = false; } if( data.success == 'false' ) { $('#'+name+'-availability').remove(); // name.destroy(); isaccepted = true; } } }); if (isaccepted == false) { return false; } else{ return true }; }
和
f1.add( Validate.Custom, { against: function() { return check_avail( 'brugernavn', '#ft001', 'usernamecheck.asp' ); }, failureMessage: 'Brugernavnet er optaget' } );
希望它可以帮到你:) 您可以在开头的链接上阅读的json查询:) (我对javascript并不熟悉,而且“isaccepted”解决方案可以做得更好)