我向服务器发送请求以检查user_id和session_id对,以确保它有效。此函数获取与session_id关联的会话数据,然后如果会话数据中的user_id与作为参数传递给函数的user_id匹配,则应执行回调。不幸的是,回调由于某种原因没有执行。
如果我输入控制台" session_is_valid(2,1,function(){alert(' hi');});",我可以看到"成功"登录控制台,但没有警报。同样,如果我使用了无效的一对,我会正确地通知"失败"信息。但回调永远不会执行。
这与我在浏览器中使用控制台的方式有关吗?或者我的功能有问题吗?
//Confirm a session id / user id pair
function session_is_valid(session_id, user_id, callback) {
var data = {'id': session_id};
return $.ajax({
type: "POST",
url: ears_path + "?q=session",
data: JSON.stringify(data),
contentType: 'application/json; charset=UTF-8',
dataType: 'json',
success: function (result) {
if(result.user_id === user_id) {
console.log('success');
callback
}
else { console.log('failure'); }
}
});
}
答案 0 :(得分:-1)
有些评论可以看到相同的答案。在我看来,你需要使用callback()而不是回调来调用函数,如果你只是执行回调你正在检索和fn对象(函数对象),但你不会执行它。您可以检查打开浏览器控制台的解决方案,并编写回调和回调(),如果您在全局范围内使用该函数,或者您正在调试脚本。
答案 1 :(得分:-1)
这就是我执行我的方式,根据您的需要进行修改。
function run_some_ajax() {
ajax_call(function(result) { //by populating result here, you can reference the data returned from your ajax call
//success callback logic here
console.log(result);
});
}
function ajax_call(callback) {
$.ajax({
type: "POST",
url: ears_path + "?q=session",
data: JSON.stringify(data),
contentType: 'application/json; charset=UTF-8',
dataType: 'json',
success: function (result) {
if(result.user_id === user_id) {
console.log('success');
if(typeof callback === "function") { //always check to see if callback is in fact a function
callback(result); //place results into your callback function to reference later
}
} else {
console.log('failure');
}
}
});
}