我做了一个函数,它是下面的一个函数,我将数据传递给它并按原样返回结果。我这样做是因为我将需要大量的ajax调用,而我只是做了一个函数,将数据传递给它并按原样获取结果并使用结果。
function FunctionsCall(data){
var ret;
$.ajax({
type:'GET',
url: 'includes/helpers/functions.php',
dataType:"json",
data: data,
success: function(result){
ret = result;
}});
return ret;}
现在我在需要的地方调用它:
$('#register-name, #register-surname').keyup(function(e) {
var x = FunctionsCall({query: $(this).val(), funcid: 1});
(x!==1) ? $(this).addClass('input-has-error') : $(this).removeClass('input-has-error'); });
但是奇怪的是,我总是将x视为未定义。指出ret是用1或0填充的,我不知道为什么它没有被传递给x。
你能帮我吗?这可能很简单,但我只是在需要时使用javascript和jquery进行实验。
问候
ret
在成功函数运行时(即ajax完成时)才被设置。FunctionCall
但是马上返回。您将需要返回ajax延迟对象,或者将addClass / removeClass功能放入您的成功函数中。
将addClass / removeClass功能添加到成功功能的方法如下:
function FunctionsCall(data, successFn) {
$.ajax({
type: 'GET',
url: 'includes/helpers/functions.php',
dataType: "json",
data: data,
success: successFn
});
}
$('#register-name, #register-surname').keyup(function(e) {
var element = $(this);
var data = { query: element.val(), funcid: 1 };
var successFn = function(x) {
if (x !== 1) {
element.addClass('input-has-error')
} else {
element.removeClass('input-has-error');
}
}
FunctionsCall(data, successFn);
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句