gpt4 book ai didi

javascript - 为什么当我单击按钮时我会变得未定义?

转载 作者:太空宇宙 更新时间:2023-11-04 15:27:08 25 4
gpt4 key购买 nike

我想尝试通过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时,您无法真正返回结果,因为它是异步的并且在结果之后执行一段时间被返回。

您必须使用回调或 promise 才能使其正常工作。

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);
});
});

顺便说一句,调试时使用控制台,而不是警报。

关于javascript - 为什么当我单击按钮时我会变得未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45122648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com