AJAX XHR-Call创建无效的参数异常

时间:2014-03-19 10:25:26

标签: c# javascript jquery jqxhr

所以我尝试从异步任务中获取一个值(这里没有显示,因为它与我认为无关,并且它可以工作)到Jquery-xhr请求的进度条中。 服务器端方法不相关,因为它的工作,jquery-xhr-call也可以工作(仅限第一次)。

ASPX码:

<script runat="server">
    protected void Page_Load(object sender, EventArgs e)
    {
        if (hfworking.Value == "true")
        {
            LabelProgress.Text = hflabel.Value;
            ProgressBar1.Maximum = Convert.ToInt32(hfPBMax.Value);
            ProgressBar1.Value = Convert.ToInt32(hfPBVAL.Value);
        }
    }
</script>
<html>
<head runat="server" id="head1">
<script src="JavaScript.js" type="text/javascript"></script>
<script src="jquery-1.11.0.min.js" type="text/javascript"></script>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager runat="server" ID="pageScriptManager" EnableViewState="true"/>
    <%--<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <ContentTemplate>--%>
        <%----%><%--OnClick="Button1_Click"--%>
            <asp:Button runat="server" ID="btnDoTask" Text="Do Task" OnClientClick="StartJavaScriptProgress()" />

            <br />
            <asp:Label ID="LabelProgress" runat="server" EnableViewState="true"></asp:Label>

            <br />
            <eo:ProgressBar ID="ProgressBar1" runat="server" Width="250px" BackgroundImage="00060301"
                BackgroundImageLeft="00060302" BackgroundImageRight="00060303" ControlSkinID="None"
                IndicatorImage="00060304">
            </eo:ProgressBar>
            <asp:HiddenField ID="hflabel" runat="server"/>
            <asp:HiddenField ID="hfPBMax" runat="server"/>
            <asp:HiddenField ID="hfPBVAL" runat="server"/>
            <asp:HiddenField ID="hfworking" runat="server" Value="false" />

我在外部Javascript.js中的Javascript代码:

function StartJavaScriptProgress() {
    try {
        //setTimeout(WebService(), 1000);
        document.getElementById("hflabel").value = "Currently Working ...";
        var intervall = window.setInterval(WebService(intervall), 1000);
    }
    catch (Error) {
        alert(Error.Description + " " + Error.InnerException + " " + Error.StackTrace);
    }
};

function WebService(intervall) {
    try {
        if (document.readyState == 'complete') {

            $.ajax(
    {
        type: "POST",
        url: "AsyncTest.aspx/GetProcess",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (response) {
            if (response.d.Progressvalue == 'FINISHED') {
                window.clearInterval(intervall);
            }
            else {
                document.getElementById("hfPBMax").value = response.d.Progressmaximum;
                document.getElementById("hfPBVal").value = response.d.Progressvalue;
                document.getElementById("hfworking").value = "true";
                alert("Worked! the maximum is " + response.d.Progressmaximum + " and the actual value is " + response.d.Progressvalue + "!!");
            }
        },
        error: function (response) {
            alert(response.status + " " + response.responseText);
        }
    })
        }
    }
    catch (Error) {
        alert(Error.Description);
    }
};

它始终给我错误:&#34;无效的参数&#34;关于SetInterval的捕获... 我不明白为什么? 此外,我没有得到这个代码的页面生命周期,它进行调用,进入异常,如果我有一个断点设置为&#34; hfPBMax&#34;在它进入异常之后它会成功吗? 甚至没有提到它跳到Page_Load的频率,而我对asp.net生命周期的了解对我来说没有任何意义...... 如果有人可以帮助我解决我的错误而失败会很好。

1 个答案:

答案 0 :(得分:1)

尝试这段时间:

var intervall = window.setInterval(function(){WebService(intervall)}, 1000);

否则你传递给setInterval的是执行WebService(intervall)的结果,它可能不是函数,因此会引发异常