如何手动发送 jQuery AJAX 请求并在等待响应时执行工作?

How do I send a jQuery AJAX request manually and do work while waiting for the response?

提问人:deltasxb 提问时间:11/23/2022 更新时间:11/23/2022 访问量:41

问:

我有一个屏幕,当用户单击不同的按钮时,会加载不同的数据。下面的代码演示如何实现这一点。

$([SOME BUTTON]).click(()=>{
    //Set up a loading screen
    let jqxhr = $.ajax([address])
        .done(()=>{
            //do some work
        .fail(()=> {
            //handle error
        })
        .always(()=>{
            //remove loading screen
        });
    });

我想优化这一点,以便在设置加载屏幕之前发送请求,然后等待结果。

$([SOME BUTTON]).click(()=>{
    let jqxhr = $.ajax([address]);
    //Set up a loading screen

    jqxhr.done(()=>{
            //do some work
        .fail(()=> {
            //handle error
        })
        .always(()=>{
            //remove loading screen
        });
    });

有没有办法实现这一点?据我所知,jQuery的AJAX API中没有函数。.send()

我尝试了第二个代码片段,但调试显示,直到设置加载屏幕后才发送请求。实际上与原始实现相同。是否有任何 -type 函数或手动发送请求的方法?.send()

JavaScript jQuery Ajax 异步 优化

评论

0赞 Barmar 11/23/2022
你写的东西应该有效。 是异步的,它会在发送请求后立即返回。$.ajax()
0赞 Barmar 11/23/2022
您如何使用调试来确定它不起作用?
0赞 deltasxb 11/26/2022
我在 jqxhr.done() 之前放置了一个调试器语句,并使用 Fiddler 和 观察请求。在命中 jqxhr.done() 方法之前,没有发出任何请求。
0赞 Barmar 11/27/2022
我想不出原因。当你打电话时,它肯定会打电话。 在收到回复之前不会调用。XMLHttpRequest.send()$.ajax().done()

答: 暂无答案