返回函数返回'undefined'
我有一个函数应该返回true
或false
。虽然它返回undefined。任何想法为什么?返回函数返回'undefined'
代码:
verify_acc = function(username, password) {
var url = '//api.bos2.cf/?type=verify&username=' + username + '&password=' + password + '&callback=?';
$.getJSON(url, function(data) {
success: readData(data)
});
function readData(data) {
return data['success']; // I have also tried data.success
}
};
console.log(verify_acc('jeff', 'doe'));
任何帮助,将不胜感激。
$.getJSON
接受成功的第二个参数callback
函数。 success
回调传递返回的数据,返回的数据通常是由JSON结构定义并使用$.parseJSON()
方法解析的JavaScript对象或数组。
$.getJSON(url, success);
function success(data){
console.log(data.success);
}
的ajax
通话结束前返回verify_acc
功能,这就是你从ajax
呼叫response
收到undefined
然后。为此,我们可以实施我们的callback
方法。
verify_acc = function(username, password, callback) {
var url = '//api.bos2.cf/?type=verify&username=' + username + '&password=' + password + '&callback=?';
$.getJSON(url, success);
function success(data) {
return callback(data);
}
};
verify_acc('jeff', 'doe', function(response){
console.log(response.success);
});
谢谢。尽管只有在函数中使用'''console.log''时才有效。当我用'''return''替换'''console.log'''时,它仍然表示未定义。在我的问题''''console.log'''就在那里,所以你可以看到未定义的。我想用'''return'''。 – csf30816
@ csf30816,看看我的答案。 –
@ csf30816,我用一个完美的小提琴更新了我的解决方案。 –
你已经success
回调里面。您可以使用可选的对象的第一个参数内,但你已经使用了url
使你的代码,而像
$.getJSON(url, readData);
function readData(data) {
console.dir(data); // Open console and just make sure everything is OK
}
http://api.jquery.com/jquery.getjson/
此外,由于您正在尝试使用所谓的verify_acc
自定义回调函数你应该提供一个回调,否则当你期待回报的时候,你的请求可能不完整(因此你的data.success
可能仍然是未定义的),因为AJAX调用的异步性质
verify_acc = function(username, password, callback) { // << notice the callback argument
var url = 'http://jsbin.com/hokudep.js';
$.getJSON(url, readData);
function readData(data) {
console.log(data);
return callback(data);// use a callback!
}
};
verify_acc('jeff', 'doe', function(returnedData){
console.log(returnedData.success);
});
getJSON中的函数是成功的回调函数。摆脱成功:位。您是否阅读过http://api.jquery.com/jquery.getjson/ – Snowmonkey
[如何从异步调用返回响应?](/ questions/14220321/how-do-i-return-the-response-from - 异步调用) – Thomas
@Snowmonkey不,我从来没有读过。所以摆脱成功:readData(data)''''''data ['success'];''' – csf30816