2017-10-12 203 views
-1

我正在向服务器发送一个请求来检查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'); } 
     } 
    }); 
} 
+4

而'callback'什么都不做。可以试试'callback()'inatead? ;) –

+0

@Jonasw其实我只是一直使用回调函数,并且它在其他函数中总是可以很好地工作。这怎么可能? – Forrest

+0

@Jonasw我也不明白你提到的可能重复的相关性。我一直都在使用AJAX,并完全理解这些动态,我不会尝试不恰当地使用“返回”。我只是试图根据查询的结果进行有条件的回调。 – Forrest

回答

-1

有一些评论,你可以看到相同的答案。在我看来,如果你只是执行你正在检索的回调和fn对象(函数对象),你将需要使用callback()而不是回调函数来调用函数,但是你不会执行它。您可以检查打开浏览器控制台的解决方案,并且写入回调和回调(),如果您在全局范围内调用函数或者正在调试脚本。

+0

* fn对象*不是一个常见的被忽略 –

+0

jajajaj是的,你说的对,但是我在打字的时候因为firefox中的debuggin,当你在调试时做同样的事情时,我通常会看到它 – Auros132

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

      } 

     } 

    }); 

} 
+0

嗯为什么这是低调?这显示了实现回调并将结果输入的正确方法。 –