ajax调用成功后如何执行JS函数?

How to execute JS function after successfull ajax call?

我想全屏展示我的window。

我有一个工作函数,但是我有一个问题:

我在用户点击 UI 中的某个按钮后发送一个 AJAX 调用,以获取一些数据并准备它,在此 ajax 调用之后(在 success 我想全屏显示我的数据,但我不能那样做,因为它会引发错误: Failed to execute 'requestFullScreen' on 'Element': API can only be initiated by a user gesture.

如您所知,我有用户操作 - 单击按钮,但如果我尝试在 ajax 调用中执行 fullscreen function,这还不够。

我也试图使用全局变量来获得一个状态(我是否需要全屏显示(这取决于响应解析的结果(在 AJAX 调用之后)),但它不需要t work too.I 正在以这种方式尝试:

ISFULLSCREEN = false;

function get_ajax() {
    ajax_call ()
    .success(response) {
        if (response.fullscreen) {
           ISFULLSCREEN = true;
        }
    }
 }


function useFullscreen() {
    if (ISFULLSCREEN) {
        use_fullscreen();
    }
}

我的按钮看起来像:

<button onclick="get_ajax();useFullscreen()" value="click me" />

但函数 useFullscreen 运行速度比 ISFULLSCREEN 的值更改为 true

有人知道如何解决这个问题吗?

非常感谢!

也许在您的 ajax 请求中,使用 async: false 使获取同步,从而将所有执行保持在同一事件(来自用户点击)中。

缺点是时间长了可能会卡死

这对你有帮助吗?:

答案基本上是说您不能在没有用户交互的情况下强制进行全屏更改,但还有一些替代建议

将 async : false 添加到 ajax 调用并在 ajax 成功时调用函数 useFullscreen 并将其从按钮 onclick 事件中删除

你可以使用callback function回调函数是作为参数传递给另一个函数的函数,所以你可以利用它,它会在你的等待 ajax 响应到来,请参见以下示例:

ISFULLSCREEN = false;

function get_ajax(useFullscreenCallback) {
    ajax_call ()
    .success(response) {
        if (response.fullscreen) {
           ISFULLSCREEN = true;
           useFullscreenCallback();
        }
    }
 }


function useFullscreen() {
    if (ISFULLSCREEN) {
        use_fullscreen();
    }
}

get_ajax(useFullscreen);

参考:Callback Function Mozilla web docs