關於此主題有很多堆棧溢出問題,但沒有一個對我有用。AJAX成功後刷新Div
這可能是由於我需要刷新div
以調整信息時調用的PHP函數。
我有一個#tab-project-CD-smt_test
div顯示三個版本(生產,分期和最新)。用戶可以點擊分段或最近的箭頭將其向上移動。我有這部分做工精細通過使用AJAX請求:
function sendToStaging (dir, type, subtype, version) {
//Need selected category, selected type, selected subtype
$.ajax({
type: 'POST',
url: 'configs.php',
data: 'function=sendToStaging'+'&dir='+dir+'&type='+type+'&subtype='+subtype+'&version='+version,
success: function() {
// window.location.reload(true);
$('#deployed').load(document.URL);
}
});
};
function sendToProduction (dir, type, subtype, version) {
//Need selected category, selected type, selected subtype
$.ajax({
type: 'POST',
url: 'configs.php',
data: 'function=sendToProduction'+'&dir='+dir+'&type='+type+'&subtype='+subtype+'&version='+version
});
成功時,我想刷新#deployed
格,這是我的PHP makeInfoSection
創建。其中摘錄低於:
// list latest, staging, production
$html .= '<h4>Deployed Versions</h4>';
$html .= '<ul class="list-group" id="deployed">';
$html .= '<li class="list-group-item">';
$html .= '<span class="badge">production</span>';
$html .= $production.'</li>';
$html .= '<li class="list-group-item">';
$html .= '<span class="badge"><a href="#" style="color:orange"><span class="glyphicon glyphicon-arrow-up" aria-hidden="true" onclick="sendToProduction('."'$dir', '$type', '$subType', '$staging'".')"></span></a></span>';
$html .= '<span class="badge">staging</span>';
$html .= $staging.'</li>';
$html .= '<li class="list-group-item">';
$html .= '<span class="badge"><a href="#" style="color:orange"><span class="glyphicon glyphicon-arrow-up" aria-hidden="true" onclick="sendToStaging('."'$dir', '$type', '$subType', '$latest'".')"></span></a></span>';
$html .= '<span class="badge">latest</span>';
$html .= $latest.'</li>';
$html .= '</ul>';
的方法是所謂的HTML:
<div class="col-md-5 col-md-push-1 col-sm-6">
<div id="tabs" class="tab-content" style="padding:0em 0em 0em 1em">
<?php
foreach ($project_types as $type) {
// @TODO remove once folder structure is all setup
if ($type !== 'CD') continue;
foreach ($project_subtypes[$type] as $subType) {
$html = "<div role ='tabpanel' class='tab-pane'";
$html .= "id='tab-project-".$type."-".$subType."'>";
$html .= makeInfoSection($type, $subType, $project_versions[$subType], $project_dir);
$html .= "</div>";
echo $html;
}
}
foreach ($workflow_types as $type) {
foreach ($workflow_subtypes[$type] as $subType) {
$html = "<div role ='tabpanel' class='tab-pane'";
$html .= "id='tab-workflow-".$type."-".$subType."'>";
$html .= makeInfoSection($type, $subType, $workflow_versions[$subType], $workflow_dir);
$html .= "</div>";
echo $html;
}
}
?>
</div>
</div>
</div>
所以於AJAX的成功,我需要這個被刷新。我試過$('#tab-project-CD-smt_test').load(document.URL);
,但似乎沒有做任何事情。我也嘗試調用makeInfoSection
方法,但不將它添加到HTML,所以我並不感到驚訝,它沒有工作:
$approved_functions = array('sendToProduction', 'sendToLatest', 'sendToStaging');
if(array_key_exists('function', $_POST) && in_array($_POST['function'], $approved_functions)) {
// call the approved function
$dir = $_POST['dir'];
$type = $_POST['type'];
$subType = $_POST['subtype'];
$version = $_POST['version'];
$_POST['function']($dir, $type, $subType, $version);
makeInfoSection($type, $subType, $versions, $dir);
}
如何得到這個div
刷新任何想法?
我看到的一個問題是,您將在HTML中至少兩次具有相同的'id'''''部署。 'makeInfoSection'函數將'id ='deployed''硬編碼到它中。當您嘗試更新特定的div時,這會是一個問題,因爲'id's應該是唯一的。 – Keeleon
爲獲得一些PHP呈現的HTML,當前頁面的AJAX加載非常常見。我認爲你已經接近['.load'](http://api.jquery.com/load/)函數,但是當你調用它時,我相信它會嘗試加載整個頁面。根據它的文檔,你可以試試'$('#deployed')。load(document.URL +'#deployed');'這應該只帶''deployed' div並覆蓋當前'#define'的innerHTML div在你的DOM。 – romellem
@ Keeleon,這是真的,它被多次使用。它在div#tab-project-CD-smt_test下。所以我想我會想刷新那個div。 –