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

发布于 2024-12-19 02:53:26 字数 1833 浏览 0 评论 0原文

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

我正在使用 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>

JS 正在运行的表单:

$(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;
    });

});

Disclaimer: I'm new to web development.

I'm creating an event calendar using CodeIgniter, and when I'm updating an event (using js), I need to reload the exact current page that I am on at that moment. So far, all I've been able to do is redirect to the main controller containing the calendar class, which brings me back to the current month. This sucks for someone editing one event on a different month other than the current month. Any ideas on what to use/do? Thanks a lot for all of your help!

Controller:

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

View/Form:

<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>

JS That is running form:

$(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;
    });

});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

瞳孔里扚悲伤 2024-12-26 02:53:26

你应该像 Jan 所说的那样重新加载 document.location (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 — 服务器期望的数据类型。默认值:智能猜测(xml、json、脚本或 html)。

you should reload document.location as Jan said (document.location.reload()), but it should be done only when request is success, so your code will be something like this:

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

jQuery Manual

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

  1. url — A string containing the URL to which the request is sent.
  2. data — A map or string that is sent to the server with the request.
  3. success(data, textStatus, jqXHR) — A callback function that is executed if the request succeeds.
  4. dataType — The type of data expected from the server. Default: Intelligent Guess (xml, json, script, or html).
扛起拖把扫天下 2024-12-26 02:53:26

尝试

location.reload();

insted返回;

Try

location.reload();

insted of return;

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文