2012-01-23 71 views
1

在我的頁面上,我有一個表單將新記錄插入到數據庫中。在同一頁面上有一個包含當前結果集的DIV。刷新表單上的div內容提交(ajax)

我想要做的是在表單提交時刷新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

我已經把「電流行」 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成功函數的響應。

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; 
}); 
0

我認爲這是更容易使用.load方法,其中注入從服務器到給定格的反應,是這樣的:

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

或者你仍然可以使用$阿賈克斯,如:

$('#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 />"; 
} 
01什麼

希望幫助