这是我的代码:
function validateField(field, input) {
if (field && input) {
$.ajax({
type: 'POST',
url: '<?php echo site_url("ajax/verify"); ?>',
dataType: 'json',
data: { 'field' : field, 'input' : input},
success: function(result) {
var available = result.available;
if (available == 1) {
// return true (for the entire function);
}
}
});
}
return false;
}
最佳答案
现在最正确的做法是使用 $.Deferred
:
function validateField(field, input) {
if (field && input) {
return $.ajax({
type: 'POST',
url: '<?php echo site_url("ajax/verify"); ?>',
dataType: 'json',
data: { 'field' : field, 'input' : input}
}).pipe(function(result) {
var available = result.available;
return available == 1;
});
}
return $.Deferred().resolve(false);
}
validateField('somefield', 'someinput')
.done(function(result) {
if (result) {
alert('it is true');
} else {
alert('it is false');
}
});
以及基于回调的解决方案(我不喜欢它;-):
function validateField(field, input, callback) {
var cb = $.isFunction(callback) ? callback : $.noop;
if (field && input) {
$.ajax({
type: 'POST',
url: '<?php echo site_url("ajax/verify"); ?>',
dataType: 'json',
data: { 'field' : field, 'input' : input},
success: function(result) {
var available = result.available;
cb(available == 1);
}
});
return;
}
cb(false);
}
validateField('somefield', 'someinput', function(result) {
if (result) {
alert('it is true');
} else {
alert('it is false');
}
});
关于javascript - 如果 ajax 结果为 true,我需要该函数返回 true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12101153/