2017-10-12 157 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

嗯爲什麼這是低調?這顯示了實現回調並將結果輸入的正確方法。 –