Jquery AJAX回调没有成功执行

时间:2017-10-12 18:49:02

标签: javascript jquery ajax

我向服务器发送请求以检查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'); }
      }
    });
}

2 个答案:

答案 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'); 

            }

        }

    }); 

}