如何在ajax中使用延迟方法来加速从php脚本加载数据


How to use deferred method in ajax to speed up data loading from php script?

我遇到了这个通过ajax以并行方式获取数据的例子。然而,我不太明白这一点。有人能告诉我如何从php脚本获取这些数据,并以相同的方式附加到一个div,请如下所示?

特别是这一行是什么意思?globalStore.html = html;获取html类型的数据并复制到global.html页面?然后在$then部分从该页获取数据并追加?

我的目标是将一个ajax请求分成至少3个不同的php页面,然后将数据数组显示到附加的div中。

$.when(
    // Get the HTML
    $.get("/feature/", function(html) {
        globalStore.html = html;
    }),
    // Get the CSS
    $.get("/assets/feature.css", function(css) {
        globalStore.css = css;
    }),
    // Get the JS
    $.getScript("/assets/feature.js")
).then(function() {
    // All is ready now, so...
    // Add CSS to page
    $("<style />").html(globalStore.css).appendTo("head");
    // Add HTML to page
    $("body").append(globalStore.html);
});

渲染这样的页面是不必要的,因为现代浏览器无论如何都会并行拉下多个资源(脚本可能例外),但这是一个不同的问题,所以回答你的:

$.get("/feature/", function(html) {
    globalStore.html = html;
})

它所做的是从$中分配回调。get(这里称为html)到对象变量globalStore(可能在上述代码中定义)。css调用也是如此,然后$. getscript就不需要回调了。所有这些ajax调用都是封装在$中的jQuery延迟对象。当它本身返回一个新的"主"延迟对象时,在该对象上使用$。然后附加回调。当它的所有"子"延迟都被解决时触发这个回调,然后它使用存储在globalStore中的来自ajax调用的数据来操作DOM。

要在<div>中使用它-假设你想从3个不同的供应商加载价格,但同时显示它们-你会遵循相同的一般原则,只是操作dom的不同部分(即你附加的div)。

建议您完整阅读https://api.jquery.com/jquery.when/