为什么当我点击我的按钮时,我不确定?
我想尝试通过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));
所有函数在调用时都会返回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);
});
});
作为旁注,在调试时使用控制台,而不是警报。
如果我在check_notification上添加完成,它是一样的吗? –
如果你使用上面的确切代码,它仍然会提示'undefined'?你是否从服务器返回JSON – adeneo
是的,我从服务器返回json –
检查通知功能没有回调,这是我可以看到的唯一的问题 –
我该怎么做? –