我有一個名為SQLFailover.php的頁面,顯示一個有兩行的表格。每一行都將有一個切換按鈕。 第一行的切換按鈕將被設定為主按鈕,該行的服務器名稱將由代碼中早期的SQL查詢決定。 第二行的切換按鈕將被設定為二級,并將從同一SQL查詢中獲得服務器名稱。 當任何一個按鈕被撥動時,我需要這個按鈕觸發一個帖子到SQLAction.php。該頁面將呼叫一個Powershell腳本,該腳本將更新一個表中的服務器名稱,然后通過使用header()cmd重定向到SQLFailover.php。 當SQLFailover.php被重新加載時,帶有 "從SQL表獲取當前主服務器和輔助服務器 "注釋的部分將做一個查詢,檢索主服務器和輔助服務器來顯示,在這一點上,已經從powerhell中改變,將在稍后的時間添加到SQLAction.php頁面中。 我遇到的麻煩是,當我目前的腳本POST到行動頁面時,key => value對是未定義的。 請幫助我了解這是如何發生的,并糾正我的代碼。 謝謝你。
SQLFailover.php
<linkhref="https://gitcdn. github.io/bootstrap-toggle/2.2.2/css/bootstrap-toggle.min.css" rel="styleheet">
<script src="https://ajax. googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js">< /script>
<div class="portlet-body">/span>
<div class="table-scrollable">/span>
<table class="table table-hover"/span>>
<thead>
<tr>/span>
<th class="all"/span>> 位置</th>
<th class="all"/span>> 狀態</th>
</tr>/span>
</thead>/span>
<tbody>
<? php $UserSession = $_SESSION['jigowatt']['username'];? >?
<script> var UserSession = '< ? =$UserSession?>';</script>
<?php
$env = "CERT"/span>;
if (isset($env) {
if ($env == 'CERT') {
$stageEnvironmentType = "CERT";
$SQLFileName = "AGL_C_ 01C01,10995"/span>;
$serverName = $SQLFileName;
}elseif($env == 'PROD') {
$stageEnvironmentType = "PROD";
$SQLFileName = "AGL_P_ 01P01,1111";
$serverName = $SQLFileName;
}
//SQLServer Connection; }
$connectionInfo = array( "Database"=>"master") 。
$conn = sqlsrv_connect( $serverName, $connectionInfo ) 。
if( $conn ==false ) {
die( print_r( sqlsrv_errors(), true)。
}else{
//從SQL表獲取當前主服務器和輔助服務器。
$sql = file_get_contents('SQLSelect.sql')。
$stmt = sqlsrv_query( $conn, $sql) 。
if( $stmt === false ) {
die( print_r( sqlsrv_errors(), true)。
}
while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC ) ) {
$conn_current_PrimaryReplica = $row['conn_current_PrimaryReplica'/span>]。
$conn_new_PrimaryReplica = $row['conn_new_PrimaryReplica'/span>]。
? >
<tr>
<td><? php echo $conn_current_PrimaryReplica; ? > </td>>
<td>
<input data-server-name="< ? php echo "$conn_new_PrimaryReplica"; ? > " class="toggle-event"/span> checked type="checkbox" data-toggle="toggle" data-on="Primary" data-onstyle="Success" data-off="Secondary""Secondary" data-offstyle="danger" data-size="small" />
</td>
</tr>/span>
<tr>/span>
<td> < ? php echo $conn_new_PrimaryReplica; ? > </td>>
<td>
<input data-server-name="< ? php echo "$conn_current_PrimaryReplica"; ? > " class="toggle-event"/span> 型別="checkbox" data-toggle="toggle" data- on="Primary" data-onstyle="success" data-off="Secondary""Secondary" data-offstyle="danger" data-size="small" />
</td>
</tr>/span>
<?php
}
sqlsrv_free_stmt($stmt) 。
}
}
?>。
</tbody>
</table>
</div>
</div>/span>
<script>
$(function() {
$('.toggle-event'/span>).change(function() {
var serverName = $(this).data('server-name') 。
var mode = $(this).prop('checked') 。
var username = '<? =$UserSession? >'。
var payload = {
server: serverName,
username: 用戶名
};
var form = document.createElement('form');
form.style.visibility = 'hidden';
form.method = 'POST';
form.action = '/SQLAction.php';
for (key in Object.key(payload)) {
var input = document.createElement('input');
input.name = key;
input.value = payload[key];
form.appendChild(input)。
}
document.body.appendChild(form)。
form.submit()。
})
})
</script>
下面是SQLAction.php頁面。
<?php
echo "<b>begin POST values</b><br><br>"/span>。
foreach ($_POST as $key => $value) {
echo "<tr>"/span>;
echo "<td>";
echo $key;
echo "</td>"/span>;
echo " : ";
echo "<td> ";
echo $value;
echo "</td>"/span>;
echo "</tr>"。
echo "<br>";
}
echo "<b>end of POST values</b><br><br>"/span>;
header('refresh:5; / SQLFailover.php ')。
?>/span>
uj5u.com熱心網友回復:
你的代碼中的物件鍵迭代似乎不正確(至少它似乎是非標準的),并且發現提取的值是未定義的。(我已經測驗了你的代碼,它生成了未定義的值)
請對你的代碼進行迭代。
請通過Object.keys(obj).forEach結構來迭代你的物件鍵,語法如下:
Object.keys(obj)。 forEach(key => {
// console.log(key, obj[key]); {
});
因此,對于你的情況,請改變這個塊
。 for (key in Object.keys(payload)) {
var input = document.createElement('input')。
input.name = key;
input.value = payload[key];
form.appendChild(input)。
to
Object.keys(payload)。 forEach(key => {
var input = document.createElement('input')。
input.name = key。
input.value = payload[key];
form.appendChild(input)。
});
uj5u.com熱心網友回復:
通過修改函式中的for行,該頁面現在可以作業了。
<script>
$(function() {
$('.toggle-event'/span>).change(function() {
var serverName = $(this).data('server-name') 。
var mode = $(this).prop('checked') 。
var username = '<?=$UserSession?> ';
var payload = {
server: serverName,
mode: 模式。
username: username
};
var form = document.createElement('form')。
form.style.visibility = 'hidden';
form.method = 'POST'。
form.action = 'SNFailover/SQLAction.php'。
$.each(Object.keys(payload), function(index, key) {
var input = document.createElement('input')。
input.name = key。
input.value = payload[key];
form.appendChild(input)
});
document.body.appendChild(form)。
form.submit()。
});
})
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/321860.html
標籤:
上一篇:C#中字符的唯一對應關系
