Javascript window.onload不会在每台计算机上加载

时间:2012-07-12 13:11:45

标签: php javascript jquery codeigniter

我在页面上添加了一些javascript,根据用户选择更新特定的div。

我选择这种方法而不是简单地通过PHP从数据库加载信息,因为当页面通过AJAX打开时,用户可以即时更改

div是<div id='fight'> div。它调用的函数是下面的update_fight()函数。我包含了整个.js文件以供参考,因为我有一些东西缺失。

window.onload = (function(){
update_fight();
});

function get_main(page){
     $.ajax({
            type: "POST",
            async: false,
            url: 'http://rickymason.net/d4beta/welcome/loadmain',
            dataType: 'json', 
            data: { page: page },
            success: function(content){
                var html = '';
                html += content['content'];
                $('#main').html(html);
            }
        });    
}

function pop_zone(page){
     $.ajax({
        type: "POST",
        async: false,
        url: 'http://rickymason.net/d4beta/welcome/popzone',
        dataType: 'json', 
        data: { page: page },
        success: function(content){
            var html = $(content['content'])
            var $dialog = $('<div></div>')
            .html(html)
            .dialog({
                    autoOpen: false,
                    title: 'Select Zone',
                    modal: true,
                    width: 800,
                    resizable: false 
            });
            $dialog.dialog('open');
        }
    });     
}
$(document).ready(function() {
    $("#pop_zone").dialog({autoOpen:false});    
});


function update_fight() {
    $.ajax({
        type: "POST",
        async: false,
        url: 'http://rickymason.net/d4beta/welcome/loadmain',
        dataType: 'json', 
        data: { page: 'get_zone' },
        success: function(content){
            var html = '';
            html += content['content'];
            $('#fight').html(html);
        }
    });   
}

function sql_zone(zone) {
    $.ajax({
        type: "POST",
        async: false,
        url: 'http://rickymason.net/d4beta/welcome/sql_zone',
        dataType: 'json', 
        data: { zone: zone },
        success: function(){
            update_fight();
        }
    });   
}

$("#changezone").live('click', function() {
    var page = 'change';
    pop_zone(page);
});


$(".zone").live("click",function() {
    var zone = this.id;
    sql_zone(zone);
    alert ( "Updated: Zone " + this.id );
});

update_fight()调用我的控制器loadmain:可在此处看到:

    public function loadmain()
    {
        $content = $this->main_model->get_zone();
        $page['content'] = $content;
        echo json_encode($page);
    }

get_zone()可以在这里看到:

    public function get_zone()
    {
        $user_id = $this->tank_auth->get_user_id();
        $itemroll = $this->db->query("SELECT current_zone, z.name FROM user_load ul
                                    INNER JOIN zones z
                                    ON z.id = ul.current_zone
                                    WHERE ul.user_id = $user_id");
        $result = $itemroll->row_array();
        $zone['current_zone']= $result['current_zone'];
        $zone['name'] = $result['name'];
        //HTML Formatting
        $content = '';
        $content .= "<div id='change'><input type='button' id='changezone' value='Zone'></input></div> ";
        $content .= "<div id='zonename'><a href='". base_url()."welcome/fight'>". $zone['name']."</a></div>";
        return $content;
    }

是否有任何明显的问题可能会导致在偶然页面加载期间或新页面加载期间无效?

这绝对会出现在所有3个浏览器中,但在IE7中更为一致。

2 个答案:

答案 0 :(得分:3)

你有jQuery所以使用它;)。

变化

window.onload = (function(){

$(function() {

答案 1 :(得分:2)

如果您正在使用jQuery,那么我建议挂钩:

$(window).load(function() {
  update_fight();
});

如果你想要JavaScript,那么:

window.onload = function() {
  update_fight();
};

参考文献: