我想尝试通过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 :(得分: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);
});
});
作为旁注,在调试时使用控制台,而不是警报。