ユーザーがデバイスを選択してから、デバイスで実行するコマンドを選択できるフォーム(チェックボックスの3つのグループ)があります。ユーザーが実行したいデバイスとコマンドを確認した後、続行ボタンをクリックします。
現在、フォームデータがPOSTを介して別のPHPページに送信され、そこで情報がデコードされています。次に、デバイスの情報がDBから取得され、PHPのEXECコマンドを使用して実行されるTCLスクリプトにパラメーターとして挿入されます。スクリプトが戻るまでに最大15秒かかります。
ただし、別のページを読み込む代わりに、JS $ .blockUI()を使用してページをブロックし、フォームを送信し、スクリプトが返されるのを待ってから、フォームが以前に配置されていた場所に返されたコンテンツを表示したいと思います。次に、明らかにUIのブロックを解除します。
プロジェクトにZendFrameworkを使用しています。私は次のものを持っています:
フォーム宣言:
<form name="runcommands" action="/commands/execute/" method="post">
3つの異なるチェックボックスグループ(これは動的に生成されたフォームです):
"<input type='checkbox' name='globalcommand.$id' value='$id' />$command<br />";
"<input type='checkbox' name='projectcommand.$id' value='$id' />$command<br />";
"<input type='checkbox' name='device.$id' value='$id' />$hostname<br />";
私のjavascript/ajaxの知識は、非常に非常に限られています。これは私がJSで行った最初のことです。サイトの残りの部分は、ほとんど純粋なPHP/HTMLです。これが私がJSのために試みたものです。明らかに、それは機能しません。
<script type="text/javascript">
// Globals
// prepare the form when the DOM is ready
var formd = "";
$(document).ready(function() {
//$('#messageCenter').hide();
//Form Ajax
var options = {
beforeSubmit: beforeSubmit, // pre-submit callback
success: showResponse // post-submit callback
};
$('#runcommands').ajaxForm(options); // bind form using 'ajaxForm'
$.ajax({
type: "post",
url: "/commands/execute/",
data: {
formd: formd,
serverResponse: data.message
},
complete: finishAjax
});
$.unblockUI();
});
function finishAjax (data) {
var ret = data.responseText;
alert(ret);
}
function beforeSubmit (formData, jqForm, options) {
formd = $.param(formData);
$.blockUI();
return true;
}
function showResponse(responseText, statusText, xhr, $form) {
ret = responseText;
alert(ret);
}
</script>
PHPの実行ページで、今のところスクリプトの出力をエコーアウトします。別の方法でもそれを行う方が良いでしょうか?
ご意見をお寄せいただきありがとうございます。私は立ち往生していて、ここからどこへ行くべきかわかりません。
ケビン