gpt4 book ai didi

javascript - jQuery 通过父函数返回 $.post 回调

转载 作者:行者123 更新时间:2023-12-02 19:30:32 25 4
gpt4 key购买 nike

Possible Duplicate:
Return Value from inside of $.ajax() function

以下面的函数为例:

function($data) {
$.post(
url,
{
'data': $data
},
function(response){
return response;
}
);
}

我怎样才能使父函数:function($data) { ... }返回response

由于脚本的性质,我无法将其余逻辑放入后回调中。 (见下文)

var methods = {

'email' : function(field) {
var value = field.val();
var response = false;
field.addClass("loading");
$.post(
ajaxData.url,
{
'action':'validate_form',
'value': value,
'method': field.data('method')
},
function(response){
return response;
}
).complete(function() {
field.removeClass("loading");
});
},

'password' : function(field) {
var value = field.val();
var response = {};
if (value.length < 8) {
response.result = false;
response.message = 'Your password must be a minimum of 8 characters';
} else {
response.result = true;
response.message = false;
}
return response;
},

'verify_password' : function(field, dependancies) {
var value = field.val();
var response = {};
if (value != dependancies["password"].val()) {
if (!dependancies["password"].val() || !value) {
return false;
}
response.result = false;
response.message = 'Passwords do no match';
} else {
response.result = true;
response.message = false;
}
return response;
}
}

其中 methods 的每个属性是一个可以被调用的函数,return值稍后在脚本中使用。

var response = methods[field.data('method')](field, field.data('dependancies'));

最佳答案

由于AJAXA代表异步,所以你不能按你想要的方式返回。您可以尝试使用如下回调函数:

function($data, callback) {
$.post(
url,
{
'data': $data
},
function(response){
return callback(response);
}
);
}

例如:

var myObj = {
myfunc: function($data, callback) {
$.post(
url,
{
'data': $data
},
function(response){
return callback(response);
}
);
}
}

myObj.myfunc($data, function(response) {
// process here with response
});

关于javascript - jQuery 通过父函数返回 $.post 回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11544799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com