在页面刷新之前无法运行jsvascript

时间:2017-07-10 17:14:37

标签: php jquery ajax

我最近开始使用ajax请求。我正在制作一个移动Web应用程序,我在那里请求PHP端服务器脚本的数据。 javascript函数是在用户导航到页面时自动执行。但是在我刷新页面之前,脚本似乎没有运行,这是我的javascript代码。

<script>
    $( document ).ready(function(){

    Date.prototype.yyyymmdd = function() {

        var yyyy = this.getFullYear().toString();
        var mm = (this.getMonth()+1).toString();
        var dd  = this.getDate().toString();

        return yyyy + '-' + (mm[1]?mm:"0"+mm[0]) + '-' + (dd[1]?dd:"0"+dd[0]);
    };

    function requestContent()   {

        var date = new Date();
        $.ajax({
            type:'POST',
            url:'php/app/adminTimeline.php',
            data:{
                date: date.yyyymmdd()
            },
            success: function(data) {
                if (data == '') {

                    alert("No data found!");
                } else {
                    //  $("#loading_spinner").css({"display":"none"});
                    $('#timeline-content').prepend(data);
                }
            },
            error: function(data)   {
               // $("#loading_spinner").css({"display":"none"});
                alert("Something went Wrong!");
            }
        });

    }

window.onload = requestContent();
});
</script>

document.onready方法和window.onload方法似乎也不起作用。 Ps:我也在标题中链接了Jquery库。

2 个答案:

答案 0 :(得分:0)

代码window.onload=requestContent();将在窗口加载时执行,不一定在整个文档加载时执行。

但是,在创建日期对象的位置,使用它,在文档完全加载后执行

$(document).ready(function(){
    //Code
});

这意味着,一旦窗口加载,就会在文档完全加载之前发出POST请求,因此,在刷新页面之前该日期对象将不存在,此时Javascript可能被缓存。同样another answer (@sagid)指出,window.onload不能是返回值,但必须是函数。

即。

window.onload=function(){
    //Code
};

这意味着,您的解决方案是将window.onload=requestContent();更改为

$(document).ready(function(){
    requestContent();
});
祝你好运!

答案 1 :(得分:0)

$(document).ready()中包含的代码只有在页面文档对象模型(DOM)准备好执行JavaScript代码时才会运行。

https://learn.jquery.com/using-jquery-core/document-ready/

此外,您正在调用 requestContent()

window.onload 必须是函数,而不是返回值。

$(document).ready(function(){
  // here you ajax
}

https://jsfiddle.net/cqfq5on5/1/