在我的页面上,我有一个表单,可以将新记录插入到数据库中。在同一页面上有一个包含当前结果集的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。
答案 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成功函数的响应。