jQuery-从回调函数(在后请求中)返回值到函数内部?

我有一个JavaScript函数,可将数据发布到验证脚本并从那里获取值。post请求上的回调函数返回一个布尔值,而我试图获取 整个

函数以返回该布尔值。现在,回调函数返回正确的值,但是函数本身不返回任何值。这是代码:

function validate(request_type, request_text) {

$.post("http://www.example.com/ajax/validate.php",{

type: request_type,

text: request_text

}, function(data) {

return (data == "valid");

});

}

我意识到这有点像“同步”调用,而这并不是AJAX的目的,但是我已经在validate.php(数据库调用等)中拥有许多我无法在Javascript中实现的功能,我看到了线程像这一个是谈使用某种形式的处理程序。

我如何编写一个简单的处理程序,当在语句中使用变量data或布尔比较的结果时,该处理程序才可用?data == "valid"``if/else

编辑:例如,if将使用布尔结果的语句之一:

if (!validate('password',pass_new)) {

$('#pass_new').addClass('error');

$('#pass_confirm_new').addClass('error');

$(error_string.format('Please enter a valid password.')).insertAfter('#pass_confirm_new');

$('#pass_text_short').hide();

$('#pass_text_long').show();

编辑:用onsubmit我的HTML形式的事件调用的函数:

function valid_pass_sett() {

//code to remove errors left over from previous submissions - snipped

pass_old = $('input[name=pass_old]').val();

pass_new = $('input[name=pass_new]').val();

pass_confirm_new = $('input[name=pass_confirm_new]').val();

//some if statements that don't involve AJAX requests - snipped

if (!validate('password',pass_new)) {

$('#pass_new').addClass('error');

$('#pass_confirm_new').addClass('error');

$(error_string.format('Please enter a valid password.')).insertAfter('#pass_confirm_new');

$('#pass_text_short').hide();

$('#pass_text_long').show();

return false;

}

return true;

}

我尚未编辑此代码以包含已发布的更新代码,但是我的问题是如何return false从中停止提交表单?

回答:

除非您进行 同步 AJAX调用(您可能不想这样做),否则您根本无法做到。

如果在您的代码中的多个位置使用了此函数,则最好的选择是允许它 接收 一个函数。

这样,您实际上是直接将代码传递进来,而不是依赖 函数 返回 的结果来在某些代码中使用,因此可以确保使用响应。

var my_form = $('#my_form');

my_form.submit( valid_pass_sett );

function valid_pass_sett() {

//code to remove errors left over from previous submissions - snipped

pass_old = $('input[name=pass_old]').val();

pass_new = $('input[name=pass_new]').val();

pass_confirm_new = $('input[name=pass_confirm_new]').val();

validate('password', pass_new, pswd_validation_callback); // async validation

return false; // cancel form submission

}

function validate(request_type, request_text, callback ) {

$.post("http://www.example.com/ajax/validate.php",{

type: request_type,

text: request_text

}, callback );

}

function pswd_validation_callback( data ) {

if ( data === 'valid' ) {

// if valid, call the native .submit() instead of the jQuery one

my_form[ 0 ].submit();

} else {

// Otherwise do your thing for invalid passwords.

// The form has already been canceled, so no concerns there.

$('#pass_new').addClass('error');

$('#pass_confirm_new').addClass('error');

$(error_string.format('Please enter a valid password.')).insertAfter('#pass_confirm_new');

$('#pass_text_short').hide();

$('#pass_text_long').show();

}

}


更改为使用有问题的代码。

更新与发布的其他代码一起使用。 为了清楚起见,将答案缩小到命名函数。

以上是 jQuery-从回调函数(在后请求中)返回值到函数内部? 的全部内容, 来源链接: utcz.com/qa/413872.html

回到顶部