コントローラーで 2 つのメソッドを呼び出そうとしています。変換を開始するものと、変換のパーセンテージをビューに返してプログレスバーを更新するものです。変換は、getPercentage 関数が呼び出される前に「startConversion」ボタンをクリックすることにより、ポストによって開始されます。ただし、パーセンテージ関数は機能しませんが、変換のみが開始されます。最初にパーセンテージ関数を開始しようとしましたが、機能しますが、変換ボタンを押すと setTimeout が停止し、更新されなくなります。
何が間違っている可能性があり、それを修正する方法を誰かが提案していますか?
//View
<script type="text/javascript" >
$(window).load(function () {
startConvert();
});
function startConvert() {
document.getElementById("startConversion").click()
getPercentage();
}
function getPercentage() {
$.ajax(
{
type: "POST",
url: "@Url.Action("GetPercentage","File")",
success: function (result) {
$('#div').html(result);
var r = result;
progressBarSim(r);
},
error: function (req, status, error) {
alert("Fail");
}
});
setTimeout(getPercentage, 500);
}
</script>
<form action="" method="post" enctype="multipart/form-data">
<input id="startConversion" type="Submit" name="Convert" />
</form>
//FileController
[HttpPost]
public double GetPercentage() {
return enc.Percent;
}
[HttpPost]
public ActionResult Convert()
{
... //Removed
}