2017-07-15 8 views
1

通知jsonをajaxで表示しようとしましたが、最初に私に未定義を表示してから、私の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を返すのです。 –

関連する問題