2

我在页面上添加了一些 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 中更为一致。

4

2 回答 2

3

你有 jQuery,所以使用它;)。

改变

window.onload = (function(){

$(function() {
于 2012-07-12T13:13:40.653 回答
2

如果您使用的是 jQuery,那么我建议挂钩:

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

如果你想要 JavaScript,那么:

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

参考:

于 2012-07-12T13:23:00.377 回答