表单提交后,用JS或PHP重新加载当前页面/URI


Reload Current Page/URI with JS or PHP after Form Submission

免责声明:我是web开发新手。

我正在使用CodeIgniter创建一个事件日历,当我更新一个事件(使用js)时,我需要重新加载我在那一刻的确切当前页面。到目前为止,我所能做的就是重定向到包含日历类的主控制器,这将我带回到当前月份。这对于在不同月份而不是当前月份编辑一个事件的人来说很糟糕。有什么好主意吗?非常感谢你的帮助!

控制器:

if ($this->events->update($data))
            {
                redirect('user/planner');
            }
            else
            {
                show_404();
            }

视图/形式:

<div class="reveal-modal" id="myModal">
    <?php echo form_open('user/planner/update/'.$event->id, 'id="updateForm"'); ?>
    <h3><?php echo $event->type ?></h3>
    <h4><label for="status">Status</label></h4>
    <p><?php echo form_dropdown('status', $status_options, $event->status ) ?></p>
    <h4><label for="title">Title</label></h4>
    <p><input type="text" id="title" name="title" value="<?php echo $event->title ?>" /></p>
    <h4><label for="content">Content</label></h4>
    <p><textarea rows="7" id="content" name="content"><?php echo $event->content ?></textarea></p>
    <p><?php echo form_submit('submit','Save') ?></p>
    <?php echo form_close(); ?>
</div>
这是运行形式:
$(function() {
    $('.event_list li').click( function(e) {
    console.log(this.id);
        $('#update_view_content').load('http://example.com/user/planner/update/'+this.id,function() {
            $('#myModal').reveal();
        });
    });
    $('#updateForm').live('submit', function() {
        var data = $('#updateForm').serialize();
        var url = $(this).attr('action');
        $.post(url, data);
        return;
    });
});

你应该重新加载文档。位置,如Jan所说(document.location.reload()),但它应该只在请求成功时完成,所以你的代码将是这样的:

$.post(url, data, function(response) {
    document.location.reload();
});

jQuery手册

jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] )

  1. url—包含发送请求的URL的字符串。
  2. data -随请求发送给服务器的映射或字符串。
  3. success(data, textStatus, jqXHR) -请求成功时执行的回调函数
  4. dataType -期望从服务器获得的数据类型。默认值:Intelligent Guess (xml、json、script或html)。

Try

location.reload();