【问题标题】:jquery - need to press F5 (refresh) to see contentjquery - 需要按 F5(刷新)才能看到内容
【发布时间】:2012-04-22 15:30:49
【问题描述】:

我无法理解如何使用 jquery 刷新网页...

我从这个测试页面开始:http://www.sogival.com/m-index.php 从那里,我从一个 sql 数据库生成一个区域列表,列表中的每个对象都指向一个网页,其 url 为:http://www.sogival.com/m-area.php?page_id=1(或任何其他数字 1..7)。但是当我点击这些链接中的任何一个时,我得到一个几乎是空的页面,尽管 URL 是正确的,因为来自 sql 的部分没有被填充。但令我感到奇怪的是,如果我按 F5 键,则页面显示正常!这对我来说是一个真正的谜......为什么页面第一次没有正确显示?

我还有第二个问题: 我想使用以下脚本来填充 jquery 页面上的 2 个不同区域,即 h3 和 h4。然而,无论我做什么,只有第一个术语(这里是 h3)被填充,第二个保持空!你能解释一下如何填充两者吗? 请注意,在本例中,data.items.length = 1,因此 for 循环仅传递一次。

<script type="text/javascript">
        $(function(){
        var list = '';
        $.getJSON("http://www.sogival.com/m-fetch.php",  // fichier
           {"page": "dest", "page_id": 35, "lang" : "fr"},  // paramètres
           function(data){  // fonction

           for (var i = 0; i < data.items.length; i++) { 
                   $("h3").append(data.items[i].name).listview("refresh");
                   $("h4").append(data.items[i].general).trigger("refresh");
           }
        });
    });

    </script>

【问题讨论】:

    标签: jquery sql refresh populate


    【解决方案1】:

    这很可能是由于缓存造成的。尝试添加时间戳以避免这种情况:

    function myTimestamp(){
    tstmp = new Date();    
    return tstmp.getTime();
    }
    

    然后在你的代码中:

    $.getJSON("http://www.sogival.com/m-fetch.php?" + myTimestamp(),
    // continue
    

    【讨论】:

    • 刚刚发现这里有一个类似的问题+这样的答案:stackoverflow.com/questions/367786/prevent-caching-of-ajax-call
    • 似乎对我不起作用...我更改了代码以添加: var d = new Date() var n = d.getTime() 然后在那些 php 中传递这个值 n用于从 sql 数据库和链接本身中选择数据的页面,但同样,只有在刷新 F5 后,我才能看到该页面已填充。所以现在,我有 $.getJSON("sogival.com/m-fetch.php", {"page": "area", "page_id": , "lang" : "", "n" : n}, 实际上,链接sogival.com/m-dest.php?page_id=35&n=1335114814018 仅在刷新后才有效...
    • 在这种情况下,请尝试使用 jQuery 构建的更清洁的解决方案:$(document).ready(function() { $.ajaxSetup({ cache: false }); }); 它应该可以工作(对于 $.ajax、$.getJSON 等)。
    • 我同意......它应该工作......但它根本没有!而且我对如何解决它一无所知。奇怪的是,每次我在 Firefox 中输入以下 URL:sogival.com/m-area.php?page_id=1&n=1234567890(n 为任意数字)时,无论 n 是否更改,页面都会正确显示。如果我更改 page_id 值,它也可以工作...因此,当我单击 sogival.com/m-index.php 上的列表时,它一定是阻止新页面完全更改如果您有任何建议,请告诉我...
    • 现在我明白了。您需要将代码放入$(document).ready(function() { ... } 函数中。所有如果。您可以将$(function(){ ... }) 替换为$(document).ready(function() { ... }),我认为您的代码只是在页面加载完成之前运行。
    猜你喜欢
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多