2017-07-15 139 views
1

我想嘗試通過ajax顯示我的通知json,但是當我嘗試先顯示未定義的,然後告訴我我的json我做錯了什麼?爲什麼當我點擊我的按鈕時,我不確定?

$(function (doc, win, $) { 
    var notification = win.Notification || win.mozNotification || win.webkitNotification; 
    var $badge = $("#notifications-badge"); 
    var $list = $("#notifications-list"); 
    var $button = $("#notifications-button"); 
    URL_GET_NOTIFICATION = BASE_URL + 'notifications/getNotification'; 

    function check_notifications() { 
     $.ajax({ 
      type: 'GET', 
      url: URL_GET_NOTIFICATION, 
      //data: { timestamp : timestamp }, 
      dataType: 'json', 
      async: true, 
      success: function (data) { 
       console.log(data); 
      } 
     }); 
    } 

    $button.click(function (e) { 
     alert(check_notifications()); 
    }); 

}(document, window, jQuery)); 
+0

檢查通知功能沒有回調,這是我可以看到的唯一的問題 –

+0

我該怎麼做? –

回答

1

所有函數在調用時都會返回undefined,除非另有說明。

你會得到相同的只有

function go() {}; 
 

 
alert(go()); // undefined

而這基本上是你在做什麼,提醒不返回任何一個功能。

如果從函數返回的東西,它的工作原理

function go() { return 'Hello Kitty' }; 
 

 
alert(go()); // Hello Kitty

,因爲你正在使用的函數內部AJAX,你真的不能返回因爲它是異步的,並在結果返回後執行一段時間。

您必須使用回調或承諾才能使其工作。

function check_notifications() { 
    return $.ajax({ 
     type: 'GET', 
     url: URL_GET_NOTIFICATION, 
     //data: { timestamp : timestamp }, 
     dataType: 'json' 
    }); 
} 

$button.click(function (e) { 
    check_notifications().done(function(data) { 
     alert(data); 
    }); 
}); 

作爲旁註,在調試時使用控制檯,而不是警報。

+0

如果我在check_notification上添加完成,它是一樣的嗎? –

+0

如果你使用上面的確切代碼,它仍然會提示'undefined'?你是否從服務器返回JSON – adeneo

+0

是的,我從服務器返回json –

相關問題