刷新表单提交上的div内容(ajax)

时间:2012-01-23 16:02:39

标签: php jquery

在我的页面上,我有一个表单,可以将新记录插入到数据库中。在同一页面上有一个包含当前结果集的DIV。

我要做的是在提交表单时刷新DIV(而不是整个页面)。然后DIV将包含最新记录(包括刚添加的记录)。

$('#add-variants-form').submit(function(){
    $.ajax({
        url: 'admin/addvariants',
        type: 'POST',
        dataType: 'html',
        data: $(this).serialize(),
    });

    return false;
});

<div id="current-rows">
<?php while($variant=mysql_fetch_array($variants)) { ?>
    <div class="row">
    // resultset        
    </div>
<?php } ?>
</div>

我从我的控制器中预先设置了$variants

$variants=Catalog::getProductVariants($product['id']);

理想情况下,我不希望返回一大堆HTML来注入该DIV。

3 个答案:

答案 0 :(得分:1)

在ajax请求的成功处理程序中设置新内容。试试这个

$('#add-variants-form').submit(function(){
    $.ajax({
        url: 'admin/addvariants',
        type: 'POST',
        dataType: 'html',
        data: $(this).serialize(),
        success: function(newContent){
            $('#current-rows').html(newContent);
        }
    });

    return false;
});

答案 1 :(得分:0)

我认为使用.load方法更容易,它将服务器的响应注入给定的div,如:

$('#idOfYourDiv').load('/your/url', {params: params});

或者您仍然可以使用$ .ajax,例如:

$('#add-variants-form').submit(function(){
    $.ajax({
        url: 'admin/addvariants',
        type: 'POST',
        dataType: 'html',
        data: $(this).serialize(),
        success: function(data) {
         $('#yourDiv').html(data); // html will insert response, response is stored in "data" variable
      }
    });
   return false;
});
在php网站上的

只是回显你想要显示的内容,例如

foreach($results as $result){
  echo $result."<br />";
}

希望有所帮助

答案 2 :(得分:0)

我已将“current-rows”div的内容放入其自己的单独视图文件中:

<div id="current-rows">
    <?php include("_current-rows.php"); ?>
</div>

在我的控制器'addvariants'动作中我只是这样做:

$variants=Catalog::getProductVariants($_POST['product_id']);
include('application/view/admin/catalog/_current-rows.php');

这是传递给我的jQuery成功函数的响应。