Jquery AJAX回调没有成功执行
我正在向服务器发送一个请求来检查user_id和session_id对,以确保它是有效的。此函数获取与session_id关联的会话数据,然后如果会话数据中的user_id与传递给该函数的参数匹配作为参数,则它应该执行回调。不幸的是,由于某种原因,回调不会执行。如果我在控制台中键入session_is_valid(2,1,function(){alert('hi');});“,我可以看到控制台中记录的”成功“,但没有提示。同样,如果我使用了一个无效对,我会收到一条“失败”消息。但回调从不执行。Jquery AJAX回调没有成功执行
这是我在浏览器中如何使用控制台的一些问题?或者我的功能有问题吗?
//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'); }
}
});
}
有一些评论,你可以看到相同的答案。在我看来,如果你只是执行你正在检索的回调和fn对象(函数对象),你将需要使用callback()而不是回调函数来调用函数,但是你不会执行它。您可以检查打开浏览器控制台的解决方案,并且写入回调和回调(),如果您在全局范围内调用函数或者正在调试脚本。
* fn对象*不是一个常见的被忽略 –
jajajaj是的,你说的对,但是我在打字的时候因为firefox中的debuggin,当你在调试时做同样的事情时,我通常会看到它 – Auros132
这是我如何执行我的修改以适应您的需求。
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');
}
}
});
}
嗯为什么这是低调?这显示了实现回调并将结果输入的正确方法。 –
而'callback'什么都不做。可以试试'callback()'inatead? ;) –
@Jonasw其实我只是一直使用回调函数,并且它在其他函数中总是可以很好地工作。这怎么可能? – Forrest
@Jonasw我也不明白你提到的可能重复的相关性。我一直都在使用AJAX,并完全理解这些动态,我不会尝试不恰当地使用“返回”。我只是试图根据查询的结果进行有条件的回调。 – Forrest