【问题标题】:Reload form after success callback成功回调后重新加载表单
【发布时间】:2014-04-20 04:43:14
【问题描述】:

我有一个带有多个文件输入(图像)的配置文件编辑表单,我想在成功回调时刷新表单并获取/显示最新更新的数据(图像)回到同一表单,而无需刷新整个页面。

$("#mylisting_form").ajaxForm({
        dataType: "json",
        beforeSend: function() {
            var btn = $('#btn_mylisting');
            btn.button('loading')
    },
    uploadProgress: function(event, position, total, percentComplete) {
        console.log(percentComplete); // Show the completed percent 
    },
    success: function(response) {

        if(response.success == 'success'){
            $('#form').reset();
            $('#successful').html('<b>Edited saved!</b>').show();

        }else{
            $('[id$="_error"]').html('');
            $.each(response.error, function(key, value){
                if(value){
                    $('#' + key + '_error').html(value);
                }
            });
        }
        $('#btn_mylisting').button('reset');
    },
    error: function(xhr, textStatus, errorThrown) {
        console.log(errorThrown );
    }

}); 

//form
<div id="form">
                <form class="form-horizontal" role="form" method="post" id="mylisting_form" enctype="multipart/form-data" action="inc/callback/request_update_item.php">

                    <input type="hidden" name="user_id" value="<?php echo $data->user_id ?>">
                    <input type="hidden" name="list_id" value="<?php echo $list_id ?>">

                    //uploaded image will show here
                    <div id="show_images"><? php fetch image goes here ?></div>

                    <div class="form-group">
                        <label class="col-sm-4 control-label" for="photo">Photo</label>
                        <div class="col-sm-7"><input type="file" name="files[]" class="multi" accept="gif|jpg" maxlength="3" /><p class="help-block">Up to 3 photos max.</p></div>
                    </div>

                    <div class="form-group">
                        <label class="col-sm-4 control-label" for="publish"></label>
                        <div class="col-sm-7"><input type="checkbox" name="publish" <?php echo $checked ?>> Publish</div>
                    </div>

                    <div class="form-group">
                        <label class="col-sm-4 control-label" for="email">Name</label>
                        <div class="col-sm-7"><input type="text" class="form-control" id="name" name="name" value="<?php echo $list->name ?>"><span class="error" id="name_error"></span></div>
                    </div>

                    <hr />
                    <div class="form-group">
                        <div class="col-sm-offset-4 col-sm-7"><button class="btn btn-success" id="btn_mylisting" type="submit" data-loading-text="Loading...">Save</button></div>
                    </div>
                </form>
</div>

Ajax 请求 (request_update_item.php) 仅回调成功或错误状态,它不会让 post 数据返回响应,我想简单,这就是我问的原因是可能只刷新整个 @987654322 @ 或 form 仅用于特定项目以显示从数据库获取的更新信息。

感谢您的建议!

【问题讨论】:

  • 看起来是 XY 问题。你说的是哪张图???
  • 表单有多个文件上传(图片),一旦表单数据在数据库中处理成功,回调将重新加载表单以获取/显示上传的文件(图片)回到同一个表单而不是完整的页面重新加载,希望你能明白我的意思。谢谢!
  • 您真的应该提供更相关的代码,例如何时/如何调用 ajax 请求?您如何定位/获取新的特定图像的来源?相关的 HTML 代码呢?等等……
  • 帖子已编辑,敬请指教。谢谢。
  • 那么您正在使用 PHP 来更新新图像。您之前真的应该告诉我们...现在,确实,您应该从 ajax 请求返回新的图像源,然后将其附加到特定的 DIV。 PHP是一个服务器端脚本,页面渲染后不刷新所有页面就无法调用它,意思是再次请求服务器。

标签: jquery refresh


【解决方案1】:

可以先设置html再显示:

$('#successful').html('<b>Edited saved!</b>').show();

【讨论】:

    【解决方案2】:

    你能不能使用像 Mustache 或 Handlebars 这样的模板 javascript 框架来动态重建你的表单?

    你的形象到底是关于什么的?

    【讨论】:

    • 只有几张图片在成功回调后以相同的形式显示,我知道它可以做到但刷新整个页面但使用ajax调用没有意义
    【解决方案3】:

    我不确定您在寻找什么,但是...

    $('#form').reset();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-27
      • 2016-12-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      相关资源
      最近更新 更多