要求:用户调用一个页面,当我在后台执行一个方法并重定向到该方法返回的 url 时,我显示页面正在加载。
尝试在页面加载中使用异步方法调用,页面未重定向为已加载。尝试从异步方法更新文本框并调用 textboxonchange 无法正常加载页面已根据您的建议添加了 ajax 代码,请查看
我在 pageload 中调用了一个异步方法,并在 pageload 中显示了加载消息,在异步方法完成后我得到一个 url,我试图重定向到该 url,但由于页面已经加载,我无法在异步内部执行它,所以我正在用这个 url 更新一个隐藏的文本框,并在该文本框中使用 onchange 事件并重定向,但页面仍然没有被重定向,有人可以建议一个更好的方法来做到这一点-谢谢
<asp:TextBox runat="server" ID="urlTextBox" Value="" Style="display:none;" AutoPostBack="true" ></asp:TextBox>
$(document).ready(function () {
$('#urlTextBox').change(function () {
var keyword = $("#urlTextBox").val();
if (keyword.length > 0) {
window.location.href = keyword;
}
});
urlTextBox.Text = url;
urltextbox 在异步方法中获取值,因为我在异步中处理一个长时间运行的进程以获取此 url
我添加了一个 js 文件,我在其中调用了这样的 c# 方法
$(document).ready(function () {
$('#outputFromCmdLine').Text = "Loading...";
GetOutputFromCommandLine();
});
function GetOutputFromCommandLine() {
$.ajax({
type: "POST",
url: "Page.aspx/ConvertToBatch", //url to point your webmethod
contentType: "application/json; charset=utf-8",
dataType: "json",
async:true,
success: function (Result) {
window.location.href = Result;
},
error: function (request, status, error) {
alert(request.responseText);
}
});
并且c#方法是同步方法并像这样返回url
[System.Web.Services.WebMethod()]
public static string ConvertToBatch()
{
some process
return urlstring;
}
我还在aspx页面顶部添加了js文件名,但是没有调用,这是正确的方法吗
<script type="text/javascript" src="/Scripts/jqueryFile.js"></script>